rebuild apk

This commit is contained in:
hyb1996
2017-02-13 17:46:16 +08:00
parent 0c57e18577
commit 04b4303899
37 changed files with 380 additions and 102 deletions

View File

@@ -1,11 +1,13 @@
package com.stardust.scriptdroid;
import android.annotation.SuppressLint;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -29,10 +31,17 @@ public class AboutActivity extends BaseActivity {
private void setUpUI() {
setContentView(R.layout.activity_about);
setVersionName();
setUpToolbar();
ViewBinder.bind(this);
}
@SuppressLint("SetTextI18n")
private void setVersionName() {
TextView version = $(R.id.version);
version.setText("Version " + BuildConfig.VERSION_NAME);
}
private void setUpToolbar() {
Toolbar toolbar = $(R.id.toolbar);
setSupportActionBar(toolbar);

View File

@@ -2,6 +2,7 @@ package com.stardust.scriptdroid;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
@@ -31,14 +32,16 @@ public class ErrorReportActivity extends BaseActivity {
handleIntent();
} catch (Throwable throwable) {
Log.e(TAG, "", throwable);
exit();
}
}
private void handleIntent() {
String message = getIntent().getStringExtra("message");
final String errorDetail = getIntent().getStringExtra("error");
//showErrorMessage(message, errorDetail);
showErrorMessageByDialog(message, errorDetail);
//showErrorMessage(message, errorDetail);
}
private void showErrorMessageByDialog(String message, final String errorDetail) {
@@ -46,24 +49,39 @@ public class ErrorReportActivity extends BaseActivity {
.title(R.string.text_crash)
.content(R.string.crash_feedback)
.positiveText(R.string.text_exit)
.negativeText(R.string.text_copy_debug_info)
.neutralText(R.string.text_copy_debug_info)
.negativeText(R.string.text_report_bug)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
exit();
}
})
.onNegative(new MaterialDialog.SingleButtonCallback() {
.onNeutral(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
copyToClip(getDeviceMessage() + errorDetail);
exitAfter(1000);
}
})
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
startIssueReportActivity();
finish();
}
})
.cancelable(false)
.show();
}
private void startIssueReportActivity() {
Intent intent = new Intent(this, IssueReportActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtras(getIntent());
startActivity(intent);
}
private void showErrorMessage(String message, String errorDetail) {
((TextView) findViewById(R.id.error)).setText(message + "\n" + errorDetail);
}
@@ -93,7 +111,8 @@ public class ErrorReportActivity extends BaseActivity {
}
private void setUpToolbar() {
Toolbar toolbar = $(R.id.toolbar);
Toolbar toolbar;
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(getString(R.string.text_error_report));
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(false);

View File

@@ -1,12 +1,16 @@
package com.stardust.scriptdroid;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.support.design.widget.FloatingActionButton;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.heinrichreimersoftware.androidissuereporter.IssueReporterActivity;
import com.heinrichreimersoftware.androidissuereporter.model.github.GithubTarget;
import com.stardust.scriptdroid.R;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Created by Stardust on 2017/2/13.
@@ -20,8 +24,29 @@ public class IssueReportActivity extends IssueReporterActivity {
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);
getSupportActionBar().setTitle(R.string.text_report_bug);
FloatingActionButton send = (FloatingActionButton) this.findViewById(com.heinrichreimersoftware.androidissuereporter.R.id.air_buttonSend);
try {
final Method reportIssue = IssueReporterActivity.class.getDeclaredMethod("reportIssue");
reportIssue.setAccessible(true);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
reportIssue.invoke(IssueReportActivity.this);
Toast.makeText(IssueReportActivity.this, R.string.text_report_succeed, Toast.LENGTH_SHORT).show();
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
Toast.makeText(IssueReportActivity.this, R.string.text_report_fail, Toast.LENGTH_SHORT).show();
}
exit();
}
});
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
private void handleIntent() {
@@ -29,6 +54,10 @@ public class IssueReportActivity extends IssueReporterActivity {
((EditText) findViewById(R.id.air_inputDescription)).setText(errorDetail);
}
private void exit() {
finishAffinity();
}
@Override
protected GithubTarget getTarget() {
return new GithubTarget("hyb1996", "NoRootScriptDroid");
@@ -36,7 +65,7 @@ public class IssueReportActivity extends IssueReporterActivity {
@Override
protected String getGuestToken() {
return "7860bbb3897c8b2bb29a49a0820dd626bd638b1c";
return "cd403d68a9f3a3590a14408d055c55180e7af7d3";
}
}

View File

@@ -1,7 +1,11 @@
package com.stardust.scriptdroid;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
@@ -11,6 +15,7 @@ import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.text.InputType;
import android.view.View;
import android.widget.TextView;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -21,6 +26,7 @@ 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.scriptdroid.file.SampleFileTool;
import com.stardust.scriptdroid.tool.BackPressedHandler;
import com.stardust.scriptdroid.ui.ScriptFileOperation;
import com.stardust.scriptdroid.ui.ScriptListRecyclerView;
@@ -35,16 +41,25 @@ import java.io.File;
public class MainActivity extends BaseActivity implements FileChooserDialog.FileCallback {
public static final String ACTION_NOTIFY_SCRIPT_LIST_CHANGE = "ACTION_NOTIFY_SCRIPT_LIST_CHANGE";
private SlidingUpPanel mAddFilePanel;
private ScriptListRecyclerView mScriptListRecyclerView;
private ScriptFileList mScriptFileList;
private DrawerLayout mDrawerLayout;
private Receiver mReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setUpUI();
checkPermissions();
registerReceivers();
}
private void registerReceivers() {
mReceiver = new Receiver();
registerReceiver(mReceiver, new IntentFilter(ACTION_NOTIFY_SCRIPT_LIST_CHANGE));
}
private void checkPermissions() {
@@ -84,7 +99,6 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
mScriptListRecyclerView.getAdapter().notifyItemInserted(mScriptFileList.size() - 1);
}
private void setUpUI() {
mDrawerLayout = (DrawerLayout) View.inflate(this, R.layout.activity_main, null);
setContentView(mDrawerLayout);
@@ -92,15 +106,22 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
mAddFilePanel = $(R.id.bottom_menu);
setUpToolbar();
setVersionName();
setUpScriptList();
ViewBinder.bind(this);
}
@SuppressLint("SetTextI18n")
private void setVersionName() {
TextView version = $(R.id.version);
version.setText("Version " + BuildConfig.VERSION_NAME);
}
private void setUpToolbar() {
Toolbar toolbar = $(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitle(R.string.app_name);
toolbar.setTitle(R.string._app_name);
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.text_drawer_open,
R.string.text_drawer_close);
@@ -114,7 +135,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
mScriptListRecyclerView.setScriptFileList(mScriptFileList);
}
@ViewBinding.Click(R.id.fab)
@ViewBinding.Click(R.id.add)
private void showAddFilePanel() {
mAddFilePanel.show();
}
@@ -144,6 +165,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
@ViewBinding.Click(R.id.import_from_file)
private void showFileChooser() {
new FileChooserDialog.Builder(this)
.initialPath(ScriptFile.DEFAULT_FOLDER)
.extensionsFilter(".js", ".txt")
.show();
}
@@ -162,7 +184,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
NonUiInitializer.getInstance().copySampleScriptFileIfNeeded();
SampleFileTool.getInstance().copySampleScriptFileIfNeeded();
mScriptListRecyclerView.getAdapter().notifyDataSetChanged();
}
}
@@ -174,8 +196,31 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
private BackPressedHandler mBackPressedHandler = new BackPressedHandler.DoublePressExit(this);
@Override
public void onBackPressed() {
mBackPressedHandler.onBackPressed();
if (mScriptListRecyclerView.getScriptFileOperationPopupMenu().isShowing()) {
mScriptListRecyclerView.getScriptFileOperationPopupMenu().dismiss();
} else if (mAddFilePanel.isShowing()) {
mAddFilePanel.dismiss();
} else {
mBackPressedHandler.onBackPressed();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
private class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_NOTIFY_SCRIPT_LIST_CHANGE)) {
mScriptListRecyclerView.getAdapter().notifyDataSetChanged();
}
}
}
}

View File

@@ -10,10 +10,8 @@ import android.preference.PreferenceManager;
public class Pref {
private static final SharedPreferences DISPOSABLE_BOOLEAN = App.getApp().getSharedPreferences("DISPOSABLE_BOOLEAN", Context.MODE_PRIVATE);
public static final String SAMPLE_SCRIPTS_COPIED = "SAMPLE_SCRIPTS_COPIED";
public static SharedPreferences def() {
return PreferenceManager.getDefaultSharedPreferences(App.getApp());
}
@@ -33,4 +31,8 @@ public class Pref {
public static boolean isFirstGoToAccessibilitySetting() {
return getDisposableBoolean("isFirstGoToAccessibilitySetting", true);
}
public static int oldVersion(){
return 0;
}
}

View File

@@ -9,6 +9,7 @@ import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;
import com.stardust.scriptdroid.file.SampleFileTool;
import com.stardust.util.MapEntries;
import java.util.Map;
@@ -65,9 +66,10 @@ public class SettingsActivity extends BaseActivity {
.entry(getString(R.string.text_re_import_samples), new Runnable() {
@Override
public void run() {
int failCount = NonUiInitializer.getInstance().copySampleScriptFile();
int failCount = SampleFileTool.getInstance().copySampleScriptFile();
if (failCount <= 0) {
Toast.makeText(getActivity(), R.string.text_re_import_succeed, Toast.LENGTH_SHORT).show();
notifyScriptListChanged();
} else
Toast.makeText(getActivity(), R.string.text_fail, Toast.LENGTH_SHORT).show();
}
@@ -87,6 +89,10 @@ public class SettingsActivity extends BaseActivity {
.map();
}
private void notifyScriptListChanged() {
getActivity().sendBroadcast(new Intent(MainActivity.ACTION_NOTIFY_SCRIPT_LIST_CHANGE));
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
Runnable action = ACTION_MAP.get(preference.getTitle().toString());

View File

@@ -41,7 +41,7 @@ public class Droid {
public void onRunFinished(Object result, Exception e) {
if (e != null) {
RUNTIME.toast(App.getApp().getString(R.string.text_error) + ": " + e.getMessage());
Timber.e(App.getApp().getString(R.string.text_error), e);
Timber.e(e, App.getApp().getString(R.string.text_error));
}
}
};
@@ -55,12 +55,18 @@ public class Droid {
}
public void runScriptFile(File file) {
checkFile(file);
runScript(FileUtils.readString(file));
runScriptFile(file, null);
}
public void runScriptFile(File file, OnRunFinishedListener listener) {
checkFile(file);
Timber.v("开始运行脚本文件: " + file);
listener = listener == null ? DEFAULT_LISTENER : listener;
try {
checkFile(file);
} catch (Exception e) {
listener.onRunFinished(null, e);
return;
}
runScript(FileUtils.readString(file), listener, RunningConfig.getDefault());
}

View File

@@ -19,6 +19,7 @@ import com.stardust.scriptdroid.droid.runtime.action.ActionFactory;
import com.stardust.scriptdroid.droid.runtime.action.ActionPerformService;
import com.stardust.scriptdroid.droid.runtime.action.ActionTarget;
import com.stardust.scriptdroid.droid.runtime.api.IDroidRuntime;
import com.stardust.scriptdroid.tool.Shell;
import java.util.List;
@@ -160,7 +161,7 @@ public class DroidRuntime implements IDroidRuntime {
App.getApp().startActivity(new Intent(App.getApp(), ConsoleActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
public void clearConsole(){
public void clearConsole() {
Console.clear();
}
@@ -200,6 +201,10 @@ public class DroidRuntime implements IDroidRuntime {
}
}
public void shell(String cmd, int root) {
Shell.execCommand(cmd, root != 0);
}
@Override
public boolean isStopped() {
return Thread.currentThread().isInterrupted();

View File

@@ -10,6 +10,7 @@ import com.stardust.scriptdroid.droid.script.file.ScriptFileList;
import com.stardust.scriptdroid.droid.script.file.SharedPrefScriptFileList;
import com.stardust.util.MapEntries;
import java.util.LinkedHashMap;
import java.util.Map;
/**
@@ -17,13 +18,13 @@ import java.util.Map;
*/
public class SampleFileTool {
private static final Map<String, Integer> SAMPLES = new MapEntries<String, Integer>()
.entry("sample_alipay_scan.js", R.string.text_sample_alipay_scan)
.entry("sample_wechat_scan.js", R.string.text_sample_wechat_scan)
private static final Map<String, Integer> SAMPLES = new MapEntries<>(new LinkedHashMap<String, Integer>())
.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)
.entry("sample_wechat_scan.js", R.string.text_sample_wechat_scan)
.entry("sample_alipay_scan.js", R.string.text_sample_alipay_scan)
.map();
private static SampleFileTool instance = new SampleFileTool();

View File

@@ -1,8 +1,8 @@
package com.stardust.scriptdroid.ui;
import android.bug.WrapContentLinearLayoutManager;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
@@ -44,7 +44,7 @@ public class AssistClipListRecyclerView extends ExpandableRecyclerView {
}
private void init() {
setLayoutManager(new LinearLayoutManager(getContext()));
setLayoutManager(new WrapContentLinearLayoutManager(getContext()));
setAdapter(new Adapter());
setOnChildClickListener(new OnChildClickListener() {
@Override
@@ -58,12 +58,14 @@ public class AssistClipListRecyclerView extends ExpandableRecyclerView {
mBoundsAssistClipList.setOnClipChangedListener(new BoundsAssistClipList.OnClipChangedListener() {
@Override
public void onClipRemove(int position) {
getAdapter().notifyItemRemoved(position);
if (isExpanded())
getAdapter().notifyItemRemoved(position);
}
@Override
public void onClipInsert(int position) {
getAdapter().notifyItemInserted(position);
if (isExpanded())
getAdapter().notifyItemInserted(position);
}
@Override

View File

@@ -1,8 +1,8 @@
package com.stardust.scriptdroid.ui;
import android.bug.WrapContentLinearLayoutManager;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
@@ -68,7 +68,7 @@ public class FunctionListRecyclerView extends ExpandableRecyclerView {
}
private void init() {
setLayoutManager(new LinearLayoutManager(getContext()));
setLayoutManager(new WrapContentLinearLayoutManager(getContext()));
setAdapter(new Adapter());
setFunctionList(FUNCTION_LIST);
setOnChildClickListener(new OnChildClickListener() {

View File

@@ -1,7 +1,7 @@
package com.stardust.scriptdroid.ui;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -60,7 +60,7 @@ public class ScriptFileOperationPopupMenu extends PopupWindow {
private void init() {
setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
setBackgroundDrawable(new BitmapDrawable());
setBackgroundDrawable(new ColorDrawable());
setOutsideTouchable(true);
setAnimationStyle(-1);
initContentView();

View File

@@ -77,6 +77,10 @@ public class ScriptListRecyclerView extends RecyclerView {
init();
}
public ScriptFileOperationPopupMenu getScriptFileOperationPopupMenu() {
return mScriptFileOperationPopupMenu;
}
private void init() {
setAdapter(new Adapter());
setLayoutManager(new LinearLayoutManager(getContext()));

View File

@@ -54,6 +54,7 @@ public class SlideMenuFragment extends Fragment {
syncSwitchState();
}
private void syncSwitchState() {
mAutoOperateServiceSwitch.postDelayed(new Runnable() {
@Override

View File

@@ -18,7 +18,7 @@ public class AccessibilityServiceUtils {
public static void goToAccessibilitySetting(Context context) {
if (Pref.isFirstGoToAccessibilitySetting()) {
Toast.makeText(context, context.getString(R.string.text_please_choose) + context.getString(R.string.app_name), Toast.LENGTH_LONG).show();
Toast.makeText(context, context.getString(R.string.text_please_choose) + context.getString(R.string._app_name), Toast.LENGTH_LONG).show();
}
context.startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}