diff --git a/app/src/main/java/com/stardust/scriptdroid/App.java b/app/src/main/java/com/stardust/scriptdroid/App.java
index 363ad426..5e44b536 100644
--- a/app/src/main/java/com/stardust/scriptdroid/App.java
+++ b/app/src/main/java/com/stardust/scriptdroid/App.java
@@ -83,10 +83,6 @@ public class App extends MultiDexApplication {
}
- public static String getResString(int id) {
- return getApp().getString(id);
- }
-
public VolumeChangeObserver getVolumeChangeObserver() {
return mVolumeChangeObserver;
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java
index 60fc5e3a..3a12d667 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java
@@ -51,15 +51,17 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
@BindView(R.id.text_start_or_pause)
TextView mStartOrPauseRecordText;
-
@BindView(R.id.stop_record)
View mStopRecord;
+ @BindView(R.id.discard_record)
+ View mDiscardRecord;
+
+
private Recorder mRecorder;
private Context mContext;
-
+ private boolean mDiscard = false;
private KeyObserver mKeyObserver;
-
private VolumeChangeObserver.OnVolumeChangeListener mOnVolumeChangeListener = new VolumeChangeObserver.OnVolumeChangeListener() {
@Override
public void onVolumeChange() {
@@ -123,6 +125,12 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
}
}
+ @OnClick(R.id.discard_record)
+ void discardRecord() {
+ mDiscard = true;
+ stopRecord();
+ }
+
private void resumeRecord() {
mRecorder.resume();
setState(Recorder.STATE_RECORDING);
@@ -135,6 +143,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
}
private void startRecord() {
+ mDiscard = false;
mRecorder = mRecordedByRootSwitch.isChecked() ? new TouchRecorder(mContext) : AutoJs.getInstance().getAccessibilityActionRecorder();
mRecorder.setOnStateChangedListener(this);
mRecorder.start();
@@ -191,7 +200,9 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
@Override
public void onStop() {
- MainActivity.onRecordStop(mContext, mRecorder.getCode());
+ if (!mDiscard) {
+ MainActivity.onRecordStop(mContext, mRecorder.getCode());
+ }
mRecorder = null;
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
index 3973202c..d048689d 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
@@ -40,6 +40,7 @@ import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.StorageScriptProvider;
import com.stardust.scriptdroid.script.sample.Sample;
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
+import com.stardust.util.IntentExtras;
import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.tool.DrawableSaver;
@@ -306,7 +307,10 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
return;
switch (action) {
case ACTION_ON_ACTION_RECORD_STOPPED:
- handleRecordedScript(intent.getStringExtra(ARGUMENT_SCRIPT));
+ IntentExtras extras = IntentExtras.fromIntent(intent);
+ String script = extras.get(ARGUMENT_SCRIPT);
+ extras.clear();
+ handleRecordedScript(script);
break;
case ACTION_IMPORT_SCRIPT:
handleImportScriptFile(intent);
@@ -442,6 +446,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
StorageScriptProvider.getDefault().notifyStoragePermissionGranted();
}
@@ -456,8 +461,10 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
public static void onRecordStop(Context context, String script) {
Intent intent = new Intent(context, MainActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .putExtra(EXTRA_ACTION, ACTION_ON_ACTION_RECORD_STOPPED)
- .putExtra(ARGUMENT_SCRIPT, script);
+ .putExtra(EXTRA_ACTION, ACTION_ON_ACTION_RECORD_STOPPED);
+ IntentExtras.newExtras()
+ .put(ARGUMENT_SCRIPT, script)
+ .putInIntent(intent);
context.startActivity(intent);
}
diff --git a/app/src/main/res/drawable/discard.png b/app/src/main/res/drawable/discard.png
new file mode 100644
index 00000000..cdc318b0
Binary files /dev/null and b/app/src/main/res/drawable/discard.png differ
diff --git a/app/src/main/res/layout/floating_window_record.xml b/app/src/main/res/layout/floating_window_record.xml
index 957bcba4..8399258c 100644
--- a/app/src/main/res/layout/floating_window_record.xml
+++ b/app/src/main/res/layout/floating_window_record.xml
@@ -148,6 +148,37 @@
+
+
+
+
+
+
+
+
+
+
> extraStore = new SparseArray<>();
+
+
+ public static IntentExtras newExtras() {
+ return new IntentExtras();
+ }
+
+ public static IntentExtras fromIntent(Intent intent) {
+ int id = intent.getIntExtra(EXTRA_ID, -1);
+ if (id < 0) {
+ throw new IllegalArgumentException("");
+ }
+ return new IntentExtras(id);
+ }
+
+ private Map mMap;
+ private int mId;
+
+ private IntentExtras() {
+ mMap = new HashMap<>();
+ mMaxId++;
+ mId = mMaxId;
+ extraStore.put(mId, mMap);
+ }
+
+
+ private IntentExtras(int id) {
+ mMap = extraStore.get(id);
+ mMaxId = id;
+ }
+
+
+ @SuppressWarnings("unchecked")
+ public T get(String key) {
+ return (T) mMap.get(key);
+ }
+
+ public IntentExtras put(String key, Object value) {
+ mMap.put(key, value);
+ return this;
+ }
+
+ public Intent putInIntent(Intent intent) {
+ intent.putExtra(EXTRA_ID, mMaxId);
+ return intent;
+ }
+
+ public void clear() {
+ extraStore.remove(mId);
+ mMap = null;
+ }
+}