From 091ec51ef2ad0d7ea8f9d7fcd8fe7acddf8ab116 Mon Sep 17 00:00:00 2001
From: hyb1996 <946994919@qq.com>
Date: Fri, 12 May 2017 13:14:17 +0800
Subject: [PATCH] fix crash when remote file name is untitle
---
.idea/misc.xml | 2 +-
app/build.gradle | 2 +-
.../SublimePluginClient.java | 52 +++++++++++++++---
.../SublimePluginClientManager.java | 8 +--
.../SublimeResponseHandler.java | 14 ++++-
.../ui/main/SlideMenuFragment.java | 18 ++++++
app/src/main/res/drawable-xxhdpi/ic_debug.png | Bin 1136 -> 0 bytes
app/src/main/res/drawable/ic_debug.png | Bin 0 -> 1103 bytes
app/src/main/res/values/strings.xml | 4 +-
version.json | 10 +++-
10 files changed, 87 insertions(+), 23 deletions(-)
delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_debug.png
create mode 100644 app/src/main/res/drawable/ic_debug.png
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ace2cb0d..9a773b88 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -47,7 +47,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 1167f3a3..bfb9e607 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
applicationId "com.stardust.scriptdroid"
minSdkVersion 19
targetSdkVersion 23
- versionCode 128
+ versionCode 129
versionName "2.0.10c Beta"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java
index c636d6a7..e0123a86 100644
--- a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java
+++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClient.java
@@ -1,14 +1,20 @@
package com.stardust.scriptdroid.sublime_plugin_client;
+import android.os.Looper;
+
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.stardust.util.UiHandler;
+import org.greenrobot.eventbus.EventBus;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
/**
* Created by Stardust on 2017/5/10.
@@ -16,18 +22,29 @@ import java.net.Socket;
public class SublimePluginClient {
+ public static class ConnectionStateChangeEvent {
+
+ private boolean mConnected;
+
+ public ConnectionStateChangeEvent(boolean connected) {
+ mConnected = connected;
+ }
+
+ public boolean isConnected() {
+ return mConnected;
+ }
+ }
private Socket mSocket;
private Handler mResponseHandler;
private String host;
private int port;
private OutputStream mOutputStream;
- private UiHandler mUiHandler;
+ private Executor mExecutor;
- public SublimePluginClient(UiHandler handler, String host, int port) {
+ public SublimePluginClient(String host, int port) {
this.host = host;
this.port = port;
- mUiHandler = handler;
}
public void setResponseHandler(Handler handler) {
@@ -43,8 +60,8 @@ public class SublimePluginClient {
public void run() {
try {
mSocket = new Socket(host, port);
+ EventBus.getDefault().post(new ConnectionStateChangeEvent(true));
mSocket.setTcpNoDelay(true);
- mUiHandler.toast("Connected");
mOutputStream = mSocket.getOutputStream();
startReadLoop(mSocket.getInputStream());
} catch (IOException e) {
@@ -64,13 +81,30 @@ public class SublimePluginClient {
}
}
- public void send(JsonObject object) throws IOException {
+ public void send(final JsonObject object) {
if (mSocket == null) {
throw new IllegalStateException("Socket is not listening ");
}
- mOutputStream.write(object.toString().getBytes());
- mOutputStream.write("\n".getBytes());
- mOutputStream.flush();
+ if (Looper.myLooper() == Looper.getMainLooper()) {
+ if (mExecutor == null) {
+ mExecutor = Executors.newSingleThreadExecutor();
+ }
+ mExecutor.execute(new Runnable() {
+ @Override
+ public void run() {
+ send(object);
+ }
+ });
+ }
+ try {
+ mOutputStream.write(object.toString().getBytes());
+ mOutputStream.write("\n".getBytes());
+ mOutputStream.flush();
+ } catch (IOException e) {
+ e.printStackTrace();
+ tryClose();
+ }
+
}
public void close() throws IOException {
@@ -78,7 +112,7 @@ public class SublimePluginClient {
mSocket.close();
mSocket = null;
mOutputStream = null;
- mUiHandler.toast("Disconnected");
+ EventBus.getDefault().post(new ConnectionStateChangeEvent(false));
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java
index 10a63383..bb3df54a 100644
--- a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java
+++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimePluginClientManager.java
@@ -34,7 +34,7 @@ public class SublimePluginClientManager {
}
public static void connect(String host) {
- client = new SublimePluginClient(AutoJs.getInstance().getUiHandler(), host, 1209);
+ client = new SublimePluginClient(host, 1209);
client.setResponseHandler(new SublimeResponseHandler());
client.listen();
}
@@ -45,10 +45,6 @@ public class SublimePluginClientManager {
JsonObject object = new JsonObject();
object.addProperty("type", "log");
object.addProperty("log", log);
- try {
- client.send(object);
- } catch (IOException e) {
- e.printStackTrace();
- }
+ client.send(object);
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java
index f38b955e..b2266a17 100644
--- a/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java
+++ b/app/src/main/java/com/stardust/scriptdroid/sublime_plugin_client/SublimeResponseHandler.java
@@ -3,6 +3,8 @@ package com.stardust.scriptdroid.sublime_plugin_client;
import android.text.TextUtils;
import android.util.SparseArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.execution.ScriptExecution;
@@ -24,7 +26,7 @@ public class SublimeResponseHandler implements Handler {
@Override
public boolean handle(JsonObject data) {
String script = data.get("script").getAsString();
- String name = data.get("name").getAsString();
+ String name = getName(data);
int viewId = data.get("view_id").getAsInt();
runScript(viewId, name, script);
return false;
@@ -44,7 +46,7 @@ public class SublimeResponseHandler implements Handler {
public boolean handle(JsonObject data) {
int viewId = data.get("view_id").getAsInt();
String script = data.get("script").getAsString();
- String name = data.get("name").getAsString();
+ String name = getName(data);
stopScript(viewId);
runScript(viewId, name, script);
return false;
@@ -82,4 +84,12 @@ public class SublimeResponseHandler implements Handler {
mScriptExecutions.delete(viewId);
}
}
+
+ private String getName(JsonObject data) {
+ JsonElement element = data.get("name");
+ if (element instanceof JsonNull) {
+ return null;
+ }
+ return element.getAsString();
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java
index b33e17ea..e66a47a0 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/SlideMenuFragment.java
@@ -10,7 +10,9 @@ import android.support.v7.widget.SwitchCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Toast;
+import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.app.Fragment;
import com.stardust.scriptdroid.R;
@@ -18,17 +20,20 @@ import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floating_window.FloatingWindowManger;
import com.stardust.scriptdroid.external.floating_window.menu.HoverMenuService;
import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
+import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginClient;
import com.stardust.scriptdroid.sublime_plugin_client.SublimePluginClientManager;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.tool.WifiTool;
import com.stardust.scriptdroid.ui.console.LogActivity;
import com.stardust.scriptdroid.ui.help.HelpCatalogueActivity;
+import com.stardust.util.IntentUtil;
import com.stardust.util.UnderuseExecutors;
import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
import java.util.concurrent.Executor;
@@ -157,6 +162,13 @@ public class SlideMenuFragment extends Fragment {
SublimePluginClientManager.connect(input.toString());
}
})
+ .neutralText(R.string.text_help)
+ .onNeutral(new MaterialDialog.SingleButtonCallback() {
+ @Override
+ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
+ IntentUtil.browse(getActivity(), "https://github.com/hyb1996/AutoJs-Sublime-Plugin/blob/master/Readme.md");
+ }
+ })
.show();
} else if (!enabled) {
SublimePluginClientManager.disconnectIfNeeded();
@@ -183,4 +195,10 @@ public class SlideMenuFragment extends Fragment {
mFloatingWindowSwitch.setChecked(event.state);
}
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onSublimeClientStateChange(SublimePluginClient.ConnectionStateChangeEvent event) {
+ mDebugSwith.setChecked(event.isConnected());
+ Toast.makeText(getActivity(), event.isConnected() ? R.string.text_connected : R.string.text_disconnected, Toast.LENGTH_SHORT).show();
+ }
+
}
diff --git a/app/src/main/res/drawable-xxhdpi/ic_debug.png b/app/src/main/res/drawable-xxhdpi/ic_debug.png
deleted file mode 100644
index f1151fa34d11b2252d3a17fe03ac28b4af1dfc11..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1136
zcmV-$1dscPP)&Okf_@EO35Scez@4tfs&m1VmH;HyyKniyC6?Y!ce?r0GY0MI(Tjh6Ot?t}nv
zabNIz3;@lK0EG4o073CIt~e*}X^#QC^K>vzmKGQq0hp{Y2H+`xSCJ5Xk*jBIJtiN<
zzU#CES`oP?v<1`{fSUlmL_##dE5_N=jo257u1BLT*BzYjH&KFpO30rx9
zCQH)k+1>!4m1KRsSym;N^i7afzZ*
z8STzg_5Tt8ULF_;KuPBkfK~r5b>`)P)PK-K?iXnJ^HBnd7dtN^X1|JMNU
z@IdN!0$s%-nr*P@|1|(c?&adyb{5Qnm&*rm+>{48>#|9AOZ*>?UIHK&4{V}!r$G5JC-TJq{r8jA&tEP!ZDu=TsTfWiU*m0zmqH#PPz&tQvYw2%rZsJGs0TC0$HCgWNYR8X^Bjh2XY*c7Dq_8n6*HV
zOg^}asYuFGCPxtHKBJDyG<%*!q!&3%WpWz-&k++jfz{&i-A
zZpG#Tp>V6)Tzsg}Y(-fvZn&ks3~S8_uc-Ifq5c7ky7N8C_eS{u00006R~&&Lka4`kr{M=JHcXZzcVb^hVN$nullZy({TN
z(sfDiruVy#9GI&-_+Apl^@I6K?-0a-GML
z?l><=zC2^ft^mOGiTha2C2<`K$MRxIT=6xM81Y*pT>(HsBkRYKOd69by)yS7O8QuV
zKvw|RjEURh?m4kZrZx<^0-!}1LL<%x$5Y6ZI>GP&Sg#q{1E{_CBhz7BazILGFaRKy
zp#h*lcy1I*HV#w2fD4xl
z=n&)HI##Hqh3yUi6eJgTon9`pGc%+)s+H~lK!I8iT9xO&x&$DAfJOOSOPH0I=l4x!
zZruV9>s;F+*Mz|k08j;N&u8bd=0JYy-ud
zWLuPb@f1Io)wi7kXtby*bDd-0@uAvUr8@vn9@e>Z($vZ}2f(@lpjP>K64tuz&=mk4
z-++=oBGwttxas(NEz#1Q2Y6h=?}=-$D>YuuL803XYmwb}fVYm2W1Bn>a`&f_WH$g<
zz7e-i5i3C%R-WTs5ZwY$q6`Zxk0Omu9U5+~JT3qjgf49|WUYyNlhkt3vQpJ;
z2>ka+Fh#io41Iqrw8`EY{?KI*1yhX>;SiSJX@tD$Fnl8f0JUs$@CwLRsI!(yQ8!f}
zC{qi*g`R?WdUb!RI0m3fGk`z&V8+#DD^ne(Qg%)3E
z@%?U;ytGz0)$%SOu!O+wLV&K4ov*R5(EH4D$9>Y`yRHI+6e又双
又双叒
又双叒叕
- 连接调试服务器
+ 连接电脑
+ 已连接
+ 已断开连接
- 无
diff --git a/version.json b/version.json
index 97498dcf..e07549f1 100644
--- a/version.json
+++ b/version.json
@@ -1,7 +1,7 @@
{
- "versionCode": 119,
- "versionName": "2.0.8 Beta",
- "releaseNotes": "* 新增 文本文件读写(参见示例)\n* 新增 代码格式化(自动缩进,排版,不支持中文)\n* 新增 真正支持作为Tasker插件使用(Tasker新建任务选择插件)\n* 新增 支持加载jar文件和模块化开发(require)\n* 新增 对文件夹的支持\n* 新增 免Root模拟返回键、Home键、电源键等(参见帮助菜单->自动操作函数)\n* 新增 任务管理\n* 优化 自动操作函数的运行方式,提高执行速度\n* 修复 某些情况下脚本运行无反应的问题\n* 修复 部分自动操作函数失效的问题\n* 修复 某些情况下关闭脚本无效的问题\n* 修复 布局范围查看点击后显示错误控件的问题",
+ "versionCode": 127,
+ "versionName": "2.0.10b Beta",
+ "releaseNotes": "* 新增 一些脚本\n* 新增 多种对话框(参见示例 对话框)\n* 新增 悬浮窗控制台(参见示例 控制台)\n* 优化 内存占用\n* 修复 一些Bug",
"downloads" : [
{
"name": "酷安",
@@ -10,6 +10,10 @@
{
"name": "应用宝",
"url": "http://a.app.qq.com/o/simple.jsp?pkgname=com.stardust.scriptdroid"
+ },
+ {
+ "name": "百度手机助手",
+ "url": "https://mobile.baidu.com/item?docid=11462633"
}
],
"oldVersions": [