api(app): app.startActivity() for string param

This commit is contained in:
hyb1996
2018-02-27 16:16:32 +08:00
parent 66c436cd99
commit 235115edf3
9 changed files with 114 additions and 58 deletions

View File

@@ -4,6 +4,7 @@ import android.app.Application;
import android.content.Context; import android.content.Context;
import com.stardust.autojs.core.console.GlobalStardustConsole; import com.stardust.autojs.core.console.GlobalStardustConsole;
import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.accessibility.AccessibilityConfig; import com.stardust.autojs.runtime.accessibility.AccessibilityConfig;
import com.stardust.autojs.runtime.exception.ScriptException; import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.Console;
@@ -12,6 +13,9 @@ import com.stardust.scriptdroid.BuildConfig;
import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.pluginclient.DevPluginService; import com.stardust.scriptdroid.pluginclient.DevPluginService;
import com.stardust.scriptdroid.ui.log.LogActivity_;
import com.stardust.scriptdroid.ui.settings.SettingsActivity;
import com.stardust.scriptdroid.ui.settings.SettingsActivity_;
import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
@@ -86,4 +90,12 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
return App.getApp(); return App.getApp();
} }
@Override
protected ScriptRuntime createRuntime() {
ScriptRuntime runtime = super.createRuntime();
runtime.putProperty("class.settings", SettingsActivity_.class);
runtime.putProperty("class.console", LogActivity_.class);
return runtime;
}
} }

View File

@@ -42,7 +42,16 @@ module.exports = function(__runtime__, scope){
} }
app.startActivity = function(i){ app.startActivity = function(i){
context.startActivity(app.intent(i).addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK)); if(typeof(i) == "string"){
if(__runtime__.getProperty("class." + i)){
context.startActivity(new Intent(context, __runtime__.getProperty("class." + i))
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}else{
throw new Error("class " + i + " not found");
}
}
context.startActivity(app.intent(i).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
} }
app.sendBroadcast = function(i){ app.sendBroadcast = function(i){

View File

@@ -99,20 +99,24 @@ public abstract class AutoJs {
mScriptEngineManager = new ScriptEngineManager(mContext); mScriptEngineManager = new ScriptEngineManager(mContext);
mScriptEngineManager.registerEngine(JavaScriptSource.ENGINE, () -> { mScriptEngineManager.registerEngine(JavaScriptSource.ENGINE, () -> {
LoopBasedJavaScriptEngine engine = new LoopBasedJavaScriptEngine(mContext); LoopBasedJavaScriptEngine engine = new LoopBasedJavaScriptEngine(mContext);
engine.setRuntime(new ScriptRuntime.Builder() engine.setRuntime(createRuntime());
.setConsole(new StardustConsole(mUiHandler, mGlobalConsole))
.setScreenCaptureRequester(mScreenCaptureRequester)
.setAccessibilityBridge(new AccessibilityBridgeImpl())
.setUiHandler(mUiHandler)
.setAppUtils(mAppUtils)
.setEngineService(mScriptEngineService)
.setShellSupplier(() -> new Shell(mContext, true)).build());
return engine; return engine;
}); });
mScriptEngineManager.registerEngine(AutoFileSource.ENGINE, () -> new RootAutomatorEngine(mContext)); mScriptEngineManager.registerEngine(AutoFileSource.ENGINE, () -> new RootAutomatorEngine(mContext));
} }
protected ScriptRuntime createRuntime() {
return new ScriptRuntime.Builder()
.setConsole(new StardustConsole(mUiHandler, mGlobalConsole))
.setScreenCaptureRequester(mScreenCaptureRequester)
.setAccessibilityBridge(new AccessibilityBridgeImpl())
.setUiHandler(mUiHandler)
.setAppUtils(mAppUtils)
.setEngineService(mScriptEngineService)
.setShellSupplier(() -> new Shell(mContext, true)).build();
}
protected void registerActivityLifecycleCallbacks() { protected void registerActivityLifecycleCallbacks() {
getApplication().registerActivityLifecycleCallbacks(new SimpleActivityLifecycleCallbacks() { getApplication().registerActivityLifecycleCallbacks(new SimpleActivityLifecycleCallbacks() {

View File

@@ -17,7 +17,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:replace="android:label, android:allowBackup"> tools:replace="android:label, android:allowBackup">
<activity android:name=".MainActivity"> <activity android:name=".LogActivity">
</activity> </activity>

View File

@@ -1 +1 @@
console.error("打包出错啦~ 使用文件夹打包请把主脚本改名为main.js"); console.error("打包出错啦~ 使用文件夹打包请把主脚本改名为main.js");

View File

@@ -23,15 +23,13 @@ import java.util.List;
import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.pm.PackageManager.PERMISSION_GRANTED;
public class MainActivity extends AppCompatActivity { public class LogActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 11186;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setupView(); setupView();
checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
} }
private void setupView() { private void setupView() {
@@ -43,43 +41,6 @@ public class MainActivity extends AppCompatActivity {
} }
private void runScript() {
new Thread(() -> new AssetsProjectLauncher("project", this).launch()).start();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
runScript();
}
protected void checkPermission(String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String[] requestPermissions = getRequestPermissions(permissions);
if (requestPermissions.length > 0) {
requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE);
} else {
runScript();
}
} else {
int[] grantResults = new int[permissions.length];
Arrays.fill(grantResults, PERMISSION_GRANTED);
onRequestPermissionsResult(PERMISSION_REQUEST_CODE, permissions, grantResults);
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
private String[] getRequestPermissions(String[] permissions) {
List<String> list = new ArrayList<>();
for (String permission : permissions) {
if (checkSelfPermission(permission) == PERMISSION_DENIED) {
list.add(permission);
}
}
return list.toArray(new String[list.size()]);
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
startActivity(new Intent(this, SettingsActivity.class)); startActivity(new Intent(this, SettingsActivity.class));

View File

@@ -1,19 +1,33 @@
package com.stardust.auojs.inrt; package com.stardust.auojs.inrt;
import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.widget.TextView; import android.widget.TextView;
import com.stardust.auojs.inrt.launch.AssetsProjectLauncher;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
/** /**
* Created by Stardust on 2018/2/2. * Created by Stardust on 2018/2/2.
*/ */
public class SplashActivity extends AppCompatActivity { public class SplashActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 11186;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -29,8 +43,45 @@ public class SplashActivity extends AppCompatActivity {
} }
private void main() { private void main() {
startActivity(new Intent(this, MainActivity.class)); checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
finish();
} }
private void runScript() {
new Thread(() -> new AssetsProjectLauncher("project", this).launch()).start();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
runScript();
}
protected void checkPermission(String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String[] requestPermissions = getRequestPermissions(permissions);
if (requestPermissions.length > 0) {
requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE);
} else {
runScript();
}
} else {
int[] grantResults = new int[permissions.length];
Arrays.fill(grantResults, PERMISSION_GRANTED);
onRequestPermissionsResult(PERMISSION_REQUEST_CODE, permissions, grantResults);
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
private String[] getRequestPermissions(String[] permissions) {
List<String> list = new ArrayList<>();
for (String permission : permissions) {
if (checkSelfPermission(permission) == PERMISSION_DENIED) {
list.add(permission);
}
}
return list.toArray(new String[list.size()]);
}
} }

View File

@@ -4,8 +4,11 @@ import android.app.Application;
import android.content.Context; import android.content.Context;
import com.stardust.auojs.inrt.App; import com.stardust.auojs.inrt.App;
import com.stardust.auojs.inrt.LogActivity;
import com.stardust.auojs.inrt.Pref; import com.stardust.auojs.inrt.Pref;
import com.stardust.auojs.inrt.R; import com.stardust.auojs.inrt.R;
import com.stardust.auojs.inrt.SettingsActivity;
import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.exception.ScriptException; import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.view.accessibility.AccessibilityServiceUtils; import com.stardust.view.accessibility.AccessibilityServiceUtils;
@@ -59,4 +62,12 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
protected Application getApplication() { protected Application getApplication() {
return App.getApp(); return App.getApp();
} }
@Override
protected ScriptRuntime createRuntime() {
ScriptRuntime runtime = super.createRuntime();
runtime.putProperty("class.settings", SettingsActivity.class);
runtime.putProperty("class.console", LogActivity.class);
return runtime;
}
} }

View File

@@ -1,7 +1,10 @@
package com.stardust.auojs.inrt.launch; package com.stardust.auojs.inrt.launch;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import com.stardust.auojs.inrt.BuildConfig;
import com.stardust.auojs.inrt.LogActivity;
import com.stardust.auojs.inrt.Pref; import com.stardust.auojs.inrt.Pref;
import com.stardust.auojs.inrt.autojs.AutoJs; import com.stardust.auojs.inrt.autojs.AutoJs;
import com.stardust.autojs.execution.ExecutionConfig; import com.stardust.autojs.execution.ExecutionConfig;
@@ -33,12 +36,17 @@ public class AssetsProjectLauncher {
public void launch() { public void launch() {
prepare(); prepare();
if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) { if (!(mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs())) {
mActivity.runOnUiThread(mActivity::finish); mActivity.runOnUiThread(() -> {
mActivity.startActivity(new Intent(mActivity, LogActivity.class));
mActivity.finish();
mActivity = null;
});
} else {
mActivity.finish();
mActivity = null;
} }
mActivity = null;
runScript(); runScript();
} }
private void runScript() { private void runScript() {
@@ -54,7 +62,7 @@ public class AssetsProjectLauncher {
private void prepare() { private void prepare() {
String projectConfigPath = PFiles.join(mProjectDir, ProjectConfig.CONFIG_FILE_NAME); String projectConfigPath = PFiles.join(mProjectDir, ProjectConfig.CONFIG_FILE_NAME);
ProjectConfig projectConfig = ProjectConfig.fromFile(projectConfigPath); ProjectConfig projectConfig = ProjectConfig.fromFile(projectConfigPath);
if (projectConfig != null && projectConfig.getVersionCode() == mProjectConfig.getVersionCode()) { if (!BuildConfig.DEBUG && projectConfig != null && projectConfig.getVersionCode() == mProjectConfig.getVersionCode()) {
return; return;
} }
PFiles.copyAsset(mActivity, PFiles.join(mAssetsProjectDir, ProjectConfig.CONFIG_FILE_NAME), projectConfigPath); PFiles.copyAsset(mActivity, PFiles.join(mAssetsProjectDir, ProjectConfig.CONFIG_FILE_NAME), projectConfigPath);