just to save works and use another computer to code

This commit is contained in:
hyb1996
2017-11-27 21:11:49 +08:00
parent 00c972ce8c
commit 9951ffae7a
30 changed files with 780 additions and 72 deletions

View File

@@ -1,5 +1,8 @@
package com.stardust.scriptdroid;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -17,6 +20,7 @@ import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.autojs.key.GlobalKeyObserver;
import com.stardust.scriptdroid.autojs.record.GlobalRecorder;
import com.stardust.scriptdroid.network.GlideApp;
import com.stardust.scriptdroid.timing.TaskSchedulerReceiver;
import com.stardust.scriptdroid.tool.CrashHandler;
import com.stardust.scriptdroid.tool.JsBeautifierFactory;
import com.stardust.scriptdroid.ui.error.ErrorReportActivity;
@@ -74,7 +78,7 @@ public class App extends MultiDexApplication {
GlobalKeyObserver.getSingleton();
GlobalRecorder.initSingleton(this);
setupDrawableImageLoader();
TaskSchedulerReceiver.setupRepeating(this);
}
private void setupDrawableImageLoader() {

View File

@@ -18,6 +18,6 @@ public class ScriptExecutionIntentService extends IntentService {
protected void onHandleIntent(@Nullable Intent intent) {
if (intent == null)
return;
CommonUtils.handleIntent(this, intent);
ScriptIntents.handleIntent(this, intent);
}
}

View File

@@ -4,12 +4,14 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.stardust.autojs.execution.ExecutionConfig;
import com.stardust.autojs.script.JavaScriptFileSource;
import com.stardust.autojs.script.ScriptSource;
import com.stardust.autojs.script.SequenceScriptSource;
import com.stardust.autojs.script.StringScriptSource;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.io.StorageFileProvider;
import com.stardust.scriptdroid.model.script.PathChecker;
import com.stardust.scriptdroid.model.script.Scripts;
import java.io.File;
@@ -17,21 +19,27 @@ import java.io.File;
* Created by Stardust on 2017/4/1.
*/
public class CommonUtils {
public class ScriptIntents {
public static final String EXTRA_KEY_PATH = "path";
public static final String EXTRA_KEY_PRE_EXECUTE_SCRIPT = "script";
public static final String EXTRA_KEY_LOOP_TIMES = "loop";
public static final String EXTRA_KEY_LOOP_INTERVAL = "interval";
public static final String EXTRA_KEY_DELAY = "delay";
public static boolean isTaskerBundleValid(Bundle bundle) {
return bundle.containsKey(CommonUtils.EXTRA_KEY_PATH) || bundle.containsKey(EXTRA_KEY_PRE_EXECUTE_SCRIPT);
return bundle.containsKey(ScriptIntents.EXTRA_KEY_PATH) || bundle.containsKey(EXTRA_KEY_PRE_EXECUTE_SCRIPT);
}
public static void handleIntent(Context context, Intent intent) {
public static boolean handleIntent(Context context, Intent intent) {
String path = getPath(intent);
String directoryPath = null;
String script = intent.getStringExtra(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
String script = intent.getStringExtra(ScriptIntents.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
int loopTimes = intent.getIntExtra(EXTRA_KEY_LOOP_TIMES, 1);
long delay = intent.getLongExtra(EXTRA_KEY_DELAY, 0);
long interval = intent.getLongExtra(EXTRA_KEY_LOOP_INTERVAL, 0);
ScriptSource source = null;
ExecutionConfig config = new ExecutionConfig().loop(delay, loopTimes, interval);
if (path == null && script != null) {
source = new StringScriptSource(script);
} else if (path != null && new PathChecker(context).checkAndToastError(path)) {
@@ -41,19 +49,20 @@ public class CommonUtils {
} else {
source = fileScriptSource;
}
directoryPath = new File(path).getParent();
config.path(new File(path).getParent(), StorageFileProvider.DEFAULT_DIRECTORY_PATH);
} else {
config.path(StorageFileProvider.DEFAULT_DIRECTORY_PATH);
}
if (source != null) {
if (directoryPath == null)
Scripts.run(source);
else
Scripts.run(source, directoryPath);
if (source == null) {
return false;
}
AutoJs.getInstance().getScriptEngineService().execute(source, config);
return true;
}
private static String getPath(Intent intent) {
if (intent.getData() != null && intent.getData().getPath() != null)
return intent.getData().getPath();
return intent.getStringExtra(CommonUtils.EXTRA_KEY_PATH);
return intent.getStringExtra(ScriptIntents.EXTRA_KEY_PATH);
}
}

View File

@@ -5,17 +5,13 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.widget.Toast;
import com.stardust.autojs.script.StringScriptSource;
import com.stardust.pio.PFile;
import com.stardust.pio.PFiles;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.model.script.ScriptFile;
import com.stardust.scriptdroid.model.script.Scripts;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import java.io.FileNotFoundException;
import java.io.InputStream;
@@ -44,7 +40,7 @@ public class RunIntentActivity extends Activity {
InputStream stream = getContentResolver().openInputStream(uri);
Scripts.run(new StringScriptSource(PFiles.read(stream)));
} else {
CommonUtils.handleIntent(this, intent);
ScriptIntents.handleIntent(this, intent);
}
}
}

View File

@@ -5,7 +5,7 @@ import android.os.Bundle;
import android.widget.Toast;
import com.stardust.scriptdroid.model.script.PathChecker;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.model.script.ScriptFile;
import com.stardust.scriptdroid.model.script.Scripts;
@@ -17,7 +17,7 @@ public class ShortcutActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String path = getIntent().getStringExtra(CommonUtils.EXTRA_KEY_PATH);
final String path = getIntent().getStringExtra(ScriptIntents.EXTRA_KEY_PATH);
if (new PathChecker(this).checkAndToastError(path)) {
runScriptFile(path);
}

View File

@@ -1,6 +1,5 @@
package com.stardust.scriptdroid.external.shortcut;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
@@ -8,8 +7,6 @@ import android.graphics.drawable.Icon;
import android.os.Build;
import android.support.annotation.RequiresApi;
import com.stardust.scriptdroid.external.CommonUtils;
import java.util.Collections;
import java.util.List;

View File

@@ -5,9 +5,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptExecutionIntentService;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.external.open.RunIntentActivity;
import com.twofortyfouram.locale.sdk.client.receiver.AbstractPluginSettingReceiver;
@@ -21,7 +19,7 @@ public class FireSettingReceiver extends AbstractPluginSettingReceiver {
@Override
protected boolean isBundleValid(@NonNull Bundle bundle) {
return CommonUtils.isTaskerBundleValid(bundle);
return ScriptIntents.isTaskerBundleValid(bundle);
}
@Override

View File

@@ -9,7 +9,7 @@ import android.view.Menu;
import android.view.MenuItem;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.model.script.ScriptFile;
import com.stardust.scriptdroid.io.StorageFileProvider;
import com.stardust.scriptdroid.ui.BaseActivity;
@@ -79,30 +79,30 @@ public class TaskPrefEditActivity extends AbstractAppCompatPluginActivity {
@Override
public boolean isBundleValid(@NonNull Bundle bundle) {
return CommonUtils.isTaskerBundleValid(bundle);
return ScriptIntents.isTaskerBundleValid(bundle);
}
@Override
public void onPostCreateWithPreviousResult(@NonNull Bundle bundle, @NonNull String s) {
mSelectedScriptFilePath = bundle.getString(CommonUtils.EXTRA_KEY_PATH);
mPreExecuteScript = bundle.getString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
mSelectedScriptFilePath = bundle.getString(ScriptIntents.EXTRA_KEY_PATH);
mPreExecuteScript = bundle.getString(ScriptIntents.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
}
@Nullable
@Override
public Bundle getResultBundle() {
Bundle bundle = new Bundle();
bundle.putString(CommonUtils.EXTRA_KEY_PATH, mSelectedScriptFilePath);
bundle.putString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT, mPreExecuteScript);
bundle.putString(ScriptIntents.EXTRA_KEY_PATH, mSelectedScriptFilePath);
bundle.putString(ScriptIntents.EXTRA_KEY_PRE_EXECUTE_SCRIPT, mPreExecuteScript);
return bundle;
}
@NonNull
@Override
public String getResultBlurb(@NonNull Bundle bundle) {
String blurb = bundle.getString(CommonUtils.EXTRA_KEY_PATH);
String blurb = bundle.getString(ScriptIntents.EXTRA_KEY_PATH);
if (TextUtils.isEmpty(blurb)) {
blurb = bundle.getString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
blurb = bundle.getString(ScriptIntents.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
}
if (TextUtils.isEmpty(blurb)) {
blurb = getString(R.string.text_path_is_empty);

View File

@@ -11,7 +11,7 @@ import android.widget.RemoteViews;
import com.stardust.pio.PFiles;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.external.open.RunIntentActivity;
import java.util.HashSet;
@@ -48,7 +48,7 @@ public class ScriptWidget extends AppWidgetProvider {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_script_shortcut);
views.setOnClickPendingIntent(R.id.widget, PendingIntent.getActivity(context, requestCode,
new Intent(context, RunIntentActivity.class)
.putExtra(CommonUtils.EXTRA_KEY_PATH, path)
.putExtra(ScriptIntents.EXTRA_KEY_PATH, path)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT));
views.setTextViewText(R.id.name, name);
appWidgetManager.updateAppWidget(widgetId, views);

View File

@@ -13,7 +13,7 @@ import com.stardust.autojs.script.ScriptSource;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.external.shortcut.Shortcut;
import com.stardust.scriptdroid.external.shortcut.ShortcutActivity;
import com.stardust.scriptdroid.io.StorageFileProvider;
@@ -77,7 +77,7 @@ public class Scripts {
new Shortcut(App.getApp()).name(scriptFile.getSimplifiedName())
.targetClass(ShortcutActivity.class)
.iconRes(R.drawable.ic_node_js_black)
.extras(new Intent().putExtra(CommonUtils.EXTRA_KEY_PATH, scriptFile.getPath()))
.extras(new Intent().putExtra(ScriptIntents.EXTRA_KEY_PATH, scriptFile.getPath()))
.send();
}
@@ -133,4 +133,12 @@ public class Scripts {
}
return null;
}
public static void send(ScriptFile file) {
Uri uri = Uri.parse("file://" + file.getPath());
App.getApp().startActivity(new Intent(Intent.ACTION_SEND)
.setDataAndType(uri, "text/plain")
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}

View File

@@ -0,0 +1,27 @@
package com.stardust.scriptdroid.timing;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.stardust.scriptdroid.external.ScriptIntents;
/**
* Created by Stardust on 2017/11/27.
*/
public class TaskReceiver extends BroadcastReceiver {
public static final String ACTION_TASK = "com.stardust.autojs.action.task";
public static final String EXTRA_TASK_ID = "task_id";
@Override
public void onReceive(Context context, Intent intent) {
ScriptIntents.handleIntent(context, intent);
int id = intent.getIntExtra(EXTRA_TASK_ID, -1);
if (id >= 0) {
TimedTaskManager.getInstance().notifyTaskFinished(id);
}
}
}

View File

@@ -0,0 +1,61 @@
package com.stardust.scriptdroid.timing;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import java.util.concurrent.TimeUnit;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by Stardust on 2017/11/27.
*/
public class TaskSchedulerReceiver extends BroadcastReceiver {
public static final String ACTION_CHECK_TASK = "com.stardust.autojs.action.check_task";
private static final String LOG_TAG = "TaskSchedulerReceiver";
private static final int REQUEST_CODE = 4056;
private static final long INTERVAL = 60 * 1000;
@Override
public void onReceive(Context context, Intent intent) {
Log.d(LOG_TAG, "onReceive");
checkTasks(context);
}
public static void checkTasks(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
TimedTaskManager.getInstance().getFutureTasksInMillis(TimeUnit.HOURS.toMillis(1))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(timedTask -> scheduleTask(context, alarmManager, timedTask));
}
private static void scheduleTask(Context context, AlarmManager alarmManager, TimedTask timedTask) {
long millis = timedTask.getNextTime();
PendingIntent op = PendingIntent.getBroadcast(context, REQUEST_CODE + 1 + timedTask.getId(),
timedTask.createIntent().setAction(TaskReceiver.ACTION_TASK),
PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, millis, op);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, millis, op);
}
}
public static void setupRepeating(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000,
INTERVAL, PendingIntent.getBroadcast(context, REQUEST_CODE,
new Intent(TaskSchedulerReceiver.ACTION_CHECK_TASK), PendingIntent.FLAG_UPDATE_CURRENT));
}
}

View File

@@ -0,0 +1,45 @@
package com.stardust.scriptdroid.timing;
import android.content.Intent;
/**
* Created by Stardust on 2017/11/27.
*/
public class TimedTask {
int mId;
boolean mDisposable;
boolean mScheduled;
public boolean isDisposable() {
return mDisposable;
}
public void setDisposable(boolean disposable) {
mDisposable = disposable;
}
public boolean isScheduled() {
return mScheduled;
}
public void setScheduled(boolean scheduled) {
mScheduled = scheduled;
}
public long getNextTime() {
return 0;
}
public int getId() {
return mId;
}
public Intent createIntent() {
return null;
}
}

View File

@@ -0,0 +1,58 @@
package com.stardust.scriptdroid.timing;
import com.pushtorefresh.storio2.sqlite.StorIOSQLite;
import com.pushtorefresh.storio2.sqlite.impl.DefaultStorIOSQLite;
import com.pushtorefresh.storio2.sqlite.queries.Query;
import io.reactivex.Observable;
/**
* Created by Stardust on 2017/11/27.
*/
public class TimedTaskManager {
static final String TABLE_NAME = "timed_tasks";
private static TimedTaskManager sInstance = new TimedTaskManager();
private StorIOSQLite mStorIOSQLite;
public static TimedTaskManager getInstance() {
return sInstance;
}
public TimedTaskManager() {
/* mStorIOSQLite = DefaultStorIOSQLite.builder()
.sqliteOpenHelper()
.build();*/
}
public void notifyTaskFinished(int id) {
getTaskById(id).subscribe(timedTask -> {
if (timedTask.isDisposable()) {
removeTask(id);
} else {
}
});
}
private Observable<TimedTask> getTaskById(int id) {
return null;
}
private void removeTask(int id) {
}
public Observable<TimedTask> getAllTasks() {
return null;
}
public Observable<TimedTask> getFutureTasksInMillis(long millis) {
long current = System.currentTimeMillis();
return getAllTasks().filter(timedTask ->
timedTask.getNextTime() - current <= millis);
}
}

View File

@@ -0,0 +1,41 @@
package com.stardust.scriptdroid.timing;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
/**
* Created by Stardust on 2017/11/27.
*/
public class TimedTaskService extends Service {
private static final int REQUEST_CODE_CHECK_TASK = 4056;
private AlarmManager mAlarmManager;
@Override
public void onCreate() {
super.onCreate();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}

View File

@@ -306,6 +306,10 @@ public class ScriptOperations {
.show();
}
public void timedTask(ScriptFile scriptFile) {
}
private class InputCallback implements MaterialDialog.InputCallback {
@@ -322,7 +326,7 @@ public class ScriptOperations {
this(ext, null);
}
public InputCallback() {
InputCallback() {
this(null);
}

View File

@@ -26,7 +26,7 @@ import com.stardust.scriptdroid.BuildConfig;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.ui.codegeneration.CodeGenerateDialog;
import com.stardust.scriptdroid.timing.TimedTaskService;
import com.stardust.scriptdroid.ui.common.NotAskAgainDialog;
import com.stardust.scriptdroid.ui.doc.OnlineDocsFragment_;
import com.stardust.scriptdroid.ui.floating.FloatyWindowManger;

View File

@@ -234,6 +234,15 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
Scripts.openByOtherApps(mSelectedScriptFile);
notifyOperated();
break;
case R.id.send:
Scripts.send(mSelectedScriptFile);
notifyOperated();
break;
case R.id.timed_task:
new ScriptOperations(getContext(), this)
.timedTask(mSelectedScriptFile);
notifyOperated();
break;
case R.id.action_sort_by_date:
sort(ScriptList.SORT_TYPE_DATE, mDirSortMenuShowing);
break;

View File

@@ -18,7 +18,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.ScriptIntents;
import com.stardust.scriptdroid.external.shortcut.Shortcut;
import com.stardust.scriptdroid.external.shortcut.ShortcutActivity;
import com.stardust.scriptdroid.external.shortcut.ShortcutManager;
@@ -100,7 +100,7 @@ public class ShortcutCreateActivity extends AppCompatActivity {
}
shortcut.name(mName.getText().toString())
.targetClass(ShortcutActivity.class)
.extras(new Intent().putExtra(CommonUtils.EXTRA_KEY_PATH, mScriptFile.getPath()))
.extras(new Intent().putExtra(ScriptIntents.EXTRA_KEY_PATH, mScriptFile.getPath()))
.send();
}
@@ -114,10 +114,10 @@ public class ShortcutCreateActivity extends AppCompatActivity {
icon = Icon.createWithBitmap(bitmap);
}
PersistableBundle extras = new PersistableBundle(1);
extras.putString(CommonUtils.EXTRA_KEY_PATH, mScriptFile.getPath());
extras.putString(ScriptIntents.EXTRA_KEY_PATH, mScriptFile.getPath());
ShortcutManager.getInstance(this).addDynamicShortcut(mName.getText(), mScriptFile.getPath(), icon,
new Intent(this, ShortcutActivity.class)
.putExtra(CommonUtils.EXTRA_KEY_PATH, mScriptFile.getPath())
.putExtra(ScriptIntents.EXTRA_KEY_PATH, mScriptFile.getPath())
.setAction(Intent.ACTION_MAIN));
}