From 0c57e185773d89f68551f1cef353a0ba94a5736b Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Mon, 13 Feb 2017 17:38:34 +0800 Subject: [PATCH] Added bug report, Fixeded en name --- ...wechat_moment.js => sample_alipay_scan.js} | 0 app/src/main/assets/sample_wechat_scan.js | 0 .../bug/WrapContentLinearLayoutManager.java | 8 ++ .../scriptdroid/IssueReportActivity.java | 42 +++++++ .../SampleFileTool.java} | 21 ++-- .../com/stardust/scriptdroid/tool/Shell.java | 115 ++++++++++++++++++ .../main/res/drawable/ic_add_file_white.png | Bin 0 -> 10673 bytes .../drawable/ic_folder_open_outline_white.png | Bin 0 -> 8136 bytes app/src/main/res/values-en/strings.xml | 3 + 9 files changed, 178 insertions(+), 11 deletions(-) rename app/src/main/assets/{sample_open_wechat_moment.js => sample_alipay_scan.js} (100%) create mode 100644 app/src/main/assets/sample_wechat_scan.js create mode 100644 app/src/main/java/android/bug/WrapContentLinearLayoutManager.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/IssueReportActivity.java rename app/src/main/java/com/stardust/scriptdroid/{NonUiInitializer.java => file/SampleFileTool.java} (79%) create mode 100644 app/src/main/java/com/stardust/scriptdroid/tool/Shell.java create mode 100644 app/src/main/res/drawable/ic_add_file_white.png create mode 100644 app/src/main/res/drawable/ic_folder_open_outline_white.png create mode 100644 app/src/main/res/values-en/strings.xml diff --git a/app/src/main/assets/sample_open_wechat_moment.js b/app/src/main/assets/sample_alipay_scan.js similarity index 100% rename from app/src/main/assets/sample_open_wechat_moment.js rename to app/src/main/assets/sample_alipay_scan.js diff --git a/app/src/main/assets/sample_wechat_scan.js b/app/src/main/assets/sample_wechat_scan.js new file mode 100644 index 00000000..e69de29b diff --git a/app/src/main/java/android/bug/WrapContentLinearLayoutManager.java b/app/src/main/java/android/bug/WrapContentLinearLayoutManager.java new file mode 100644 index 00000000..f5714fa8 --- /dev/null +++ b/app/src/main/java/android/bug/WrapContentLinearLayoutManager.java @@ -0,0 +1,8 @@ +package android.bug; + +/** + * Created by Stardust on 2017/2/13. + */ + +public class WrapContentLinearLayoutManager { +} diff --git a/app/src/main/java/com/stardust/scriptdroid/IssueReportActivity.java b/app/src/main/java/com/stardust/scriptdroid/IssueReportActivity.java new file mode 100644 index 00000000..cbbe9ff7 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/IssueReportActivity.java @@ -0,0 +1,42 @@ +package com.stardust.scriptdroid; + +import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.widget.EditText; + +import com.heinrichreimersoftware.androidissuereporter.IssueReporterActivity; +import com.heinrichreimersoftware.androidissuereporter.model.github.GithubTarget; +import com.stardust.scriptdroid.R; + +/** + * Created by Stardust on 2017/2/13. + */ + +public class IssueReportActivity extends IssueReporterActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + handleIntent(); + findViewById(com.heinrichreimersoftware.androidissuereporter.R.id.air_optionAnonymous).performClick(); + ((EditText) findViewById(R.id.air_inputTitle)).setText(R.string.text_bug_report); + Toolbar toolbar = (Toolbar) this.findViewById(com.heinrichreimersoftware.androidissuereporter.R.id.air_toolbar); + toolbar.setTitle(R.string.text_report_bug); + } + + private void handleIntent() { + final String errorDetail = getIntent().getStringExtra("error"); + ((EditText) findViewById(R.id.air_inputDescription)).setText(errorDetail); + } + + @Override + protected GithubTarget getTarget() { + return new GithubTarget("hyb1996", "NoRootScriptDroid"); + } + + @Override + protected String getGuestToken() { + return "7860bbb3897c8b2bb29a49a0820dd626bd638b1c"; + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/NonUiInitializer.java b/app/src/main/java/com/stardust/scriptdroid/file/SampleFileTool.java similarity index 79% rename from app/src/main/java/com/stardust/scriptdroid/NonUiInitializer.java rename to app/src/main/java/com/stardust/scriptdroid/file/SampleFileTool.java index 554ace67..3d7214e6 100644 --- a/app/src/main/java/com/stardust/scriptdroid/NonUiInitializer.java +++ b/app/src/main/java/com/stardust/scriptdroid/file/SampleFileTool.java @@ -1,11 +1,13 @@ -package com.stardust.scriptdroid; +package com.stardust.scriptdroid.file; import android.content.Context; +import com.stardust.scriptdroid.App; +import com.stardust.scriptdroid.Pref; +import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.droid.script.file.ScriptFile; import com.stardust.scriptdroid.droid.script.file.ScriptFileList; import com.stardust.scriptdroid.droid.script.file.SharedPrefScriptFileList; -import com.stardust.scriptdroid.file.FileUtils; import com.stardust.util.MapEntries; import java.util.Map; @@ -13,19 +15,20 @@ import java.util.Map; /** * Created by Stardust on 2017/1/30. */ -public class NonUiInitializer { +public class SampleFileTool { private static final Map SAMPLES = new MapEntries() - .entry("sample_open_wechat_moment.js", R.string.text_sample_open_what_moment) + .entry("sample_alipay_scan.js", R.string.text_sample_alipay_scan) + .entry("sample_wechat_scan.js", R.string.text_sample_wechat_scan) .entry("sample_open_running_services.js", R.string.text_sample_open_running_services) .entry("sample_qq_hongbao.js", R.string.text_sample_qq_hongbao) .entry("sample_simple_calculator.js", R.string.text_sample_simple_calculator) .entry("sample_force_qq_chat.js", R.string.text_sample_for_qq_chat) .map(); - private static NonUiInitializer instance = new NonUiInitializer(); + private static SampleFileTool instance = new SampleFileTool(); - public static NonUiInitializer getInstance() { + public static SampleFileTool getInstance() { return instance; } @@ -33,10 +36,6 @@ public class NonUiInitializer { return App.getApp(); } - public void init() { - - } - public void copySampleScriptFileIfNeeded() { if (!Pref.def().getBoolean(Pref.SAMPLE_SCRIPTS_COPIED, false)) { copySampleScriptFile(); @@ -58,7 +57,7 @@ public class NonUiInitializer { } } } - if (failCount > 0) { + if (failCount < SAMPLES.size()) { Pref.def().edit().putBoolean(Pref.SAMPLE_SCRIPTS_COPIED, true).apply(); } return failCount; diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/Shell.java b/app/src/main/java/com/stardust/scriptdroid/tool/Shell.java new file mode 100644 index 00000000..508b1d53 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/tool/Shell.java @@ -0,0 +1,115 @@ +package com.stardust.scriptdroid.tool; + +import android.util.Log; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * Created by Stardust on 2017/1/20. + * + * 来自网络~~ + */ + +public class Shell { + + + private static final String TAG = "Shell"; + + private final static String COMMAND_SU = "su"; + private final static String COMMAND_SH = "sh"; + private final static String COMMAND_EXIT = "exit\n"; + private final static String COMMAND_LINE_END = "\n"; + + /** + * Command执行结果 + * + * @author Mountain + */ + public static class CommandResult { + public int result = -1; + public String errorMsg; + public String successMsg; + } + + /** + * 执行命令—单条 + * + * @param command + * @param isRoot + * @return + */ + public static CommandResult execCommand(String command, boolean isRoot) { + String[] commands = {command}; + return execCommand(commands, isRoot); + } + + /** + * 执行命令-多条 + * + * @param commands + * @param isRoot + * @return + */ + public static CommandResult execCommand(String[] commands, boolean isRoot) { + CommandResult commandResult = new CommandResult(); + if (commands == null || commands.length == 0) return commandResult; + Process process = null; + DataOutputStream os = null; + BufferedReader successResult = null; + BufferedReader errorResult = null; + StringBuilder successMsg = null; + StringBuilder errorMsg = null; + try { + process = Runtime.getRuntime().exec(isRoot ? COMMAND_SU : COMMAND_SH); + os = new DataOutputStream(process.getOutputStream()); + for (String command : commands) { + if (command != null) { + os.write(command.getBytes()); + os.writeBytes(COMMAND_LINE_END); + os.flush(); + } + } + os.writeBytes(COMMAND_EXIT); + os.flush(); + commandResult.result = process.waitFor(); + //获取错误信息 + successMsg = new StringBuilder(); + errorMsg = new StringBuilder(); + successResult = new BufferedReader(new InputStreamReader(process.getInputStream())); + errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); + String s; + while ((s = successResult.readLine()) != null) successMsg.append(s); + while ((s = errorResult.readLine()) != null) errorMsg.append(s); + commandResult.successMsg = successMsg.toString(); + commandResult.errorMsg = errorMsg.toString(); + Log.i(TAG, commandResult.result + " | " + commandResult.successMsg + + " | " + commandResult.errorMsg); + } catch (Exception e) { + String errmsg = e.getMessage(); + if (errmsg != null) { + Log.e(TAG, errmsg); + } else { + e.printStackTrace(); + } + } finally { + try { + if (os != null) os.close(); + if (successResult != null) successResult.close(); + if (errorResult != null) errorResult.close(); + } catch (IOException e) { + String errmsg = e.getMessage(); + if (errmsg != null) { + Log.e(TAG, errmsg); + } else { + e.printStackTrace(); + } + } + if (process != null) process.destroy(); + } + return commandResult; + } + +} diff --git a/app/src/main/res/drawable/ic_add_file_white.png b/app/src/main/res/drawable/ic_add_file_white.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9981cc240b493594b1b7433019d99ea1c81e32 GIT binary patch literal 10673 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 ZZ@N!=bx+@s7QzL9vVyvNg{(#B{{b>&qMZN$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_folder_open_outline_white.png b/app/src/main/res/drawable/ic_folder_open_outline_white.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5d8abbf9d7c5ff743f0845085ad308226d272f GIT binary patch literal 8136 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 + + \ No newline at end of file