6.0.3 - 新增使用修改安全设置权限自启无障碍 修复toast/socket导致崩溃 资源英文补全 支持64位系统 部分插件及工具版本更新
This commit is contained in:
@@ -37,11 +37,11 @@ object Pref {
|
||||
}
|
||||
|
||||
fun shouldEnableAccessibilityServiceByRoot(): Boolean {
|
||||
return preferences.getBoolean(getString(R.string.key_enable_accessibility_service_by_root), true)
|
||||
return preferences.getBoolean(getString(R.string.key_enable_a11y_service_with_root_access), true)
|
||||
}
|
||||
|
||||
fun shouldHideLogs(): Boolean {
|
||||
return preferences.getBoolean(getString(R.string.key_not_show_main_activity), false)
|
||||
return preferences.getBoolean(getString(R.string.key_not_showing_main_activity), false)
|
||||
}
|
||||
|
||||
fun shouldStopAllScriptsWhenVolumeUp(): Boolean {
|
||||
|
||||
@@ -2,25 +2,21 @@ package com.stardust.auojs.inrt
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager.PERMISSION_DENIED
|
||||
import android.graphics.Typeface
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.NonNull
|
||||
import androidx.annotation.Nullable
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
|
||||
import com.stardust.auojs.inrt.autojs.AutoJs
|
||||
import com.stardust.auojs.inrt.launch.GlobalProjectLauncher
|
||||
|
||||
import java.util.ArrayList
|
||||
|
||||
import android.content.pm.PackageManager.PERMISSION_DENIED
|
||||
import android.os.Looper
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2018/2/2.
|
||||
*/
|
||||
@@ -61,6 +57,7 @@ class SplashActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(requestCode: Int, @NonNull permissions: Array<String>, @NonNull grantResults: IntArray) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
runScript()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
package com.stardust.auojs.inrt.autojs
|
||||
|
||||
import android.accessibilityservice.AccessibilityService
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.provider.Settings
|
||||
import android.text.TextUtils
|
||||
|
||||
import com.stardust.app.GlobalAppContext
|
||||
import com.stardust.auojs.inrt.App
|
||||
import com.stardust.autojs.core.util.ProcessShell
|
||||
|
||||
import java.util.Locale
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/7/1.
|
||||
*/
|
||||
|
||||
object AccessibilityServiceTool {
|
||||
|
||||
private val cmd = "enabled=$(settings get secure enabled_accessibility_services)\n" +
|
||||
"pkg=%s\n" +
|
||||
"if [[ \$enabled == *\$pkg* ]]\n" +
|
||||
"then\n" +
|
||||
"echo already_enabled\n" +
|
||||
"else\n" +
|
||||
"enabled=\$pkg:\$enabled\n" +
|
||||
"settings put secure enabled_accessibility_services \$enabled\n" +
|
||||
"fi"
|
||||
|
||||
fun enableAccessibilityServiceByRoot(context: Context, accessibilityService: Class<out AccessibilityService>): Boolean {
|
||||
val serviceName = context.packageName + "/" + accessibilityService.name
|
||||
return try {
|
||||
TextUtils.isEmpty(ProcessShell.execCommand(String.format(Locale.getDefault(), cmd, serviceName), true).error)
|
||||
} catch (ignored: Exception) {
|
||||
false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun enableAccessibilityServiceByRootAndWaitFor(context: Context, timeOut: Long): Boolean {
|
||||
if (enableAccessibilityServiceByRoot(context, com.stardust.view.accessibility.AccessibilityService::class.java)) {
|
||||
com.stardust.view.accessibility.AccessibilityService.waitForEnabled(timeOut)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun goToAccessibilitySetting() {
|
||||
GlobalAppContext.get().startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,17 +5,15 @@ import android.app.Application
|
||||
import android.content.Context
|
||||
import com.stardust.app.GlobalAppContext
|
||||
import com.stardust.auojs.inrt.LogActivity
|
||||
import com.stardust.auojs.inrt.Pref
|
||||
import com.stardust.auojs.inrt.R
|
||||
import com.stardust.auojs.inrt.SettingsActivity
|
||||
import com.stardust.autojs.core.accessibility.AccessibilityServiceTool
|
||||
import com.stardust.autojs.runtime.ScriptRuntime
|
||||
import com.stardust.autojs.runtime.api.AppUtils
|
||||
import com.stardust.autojs.runtime.exception.ScriptException
|
||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException
|
||||
import com.stardust.autojs.script.JavaScriptSource
|
||||
import com.stardust.view.accessibility.AccessibilityService
|
||||
import com.stardust.view.accessibility.AccessibilityServiceUtils
|
||||
import java.lang.IllegalStateException
|
||||
|
||||
|
||||
/**
|
||||
@@ -32,25 +30,18 @@ class AutoJs private constructor(application: Application) : com.stardust.autojs
|
||||
return AppUtils(context, context.packageName + ".fileprovider")
|
||||
}
|
||||
|
||||
|
||||
override fun ensureAccessibilityServiceEnabled() {
|
||||
if (AccessibilityService.instance != null) {
|
||||
return
|
||||
}
|
||||
var errorMessage: String? = null
|
||||
if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(application, AccessibilityService::class.java)) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_auto_operate_service_enabled_but_not_running)
|
||||
} else {
|
||||
if (Pref.shouldEnableAccessibilityServiceByRoot()) {
|
||||
if (!AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(application, 2000)) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_enable_accessibility_service_by_root_timeout)
|
||||
}
|
||||
} else {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_no_accessibility_permission)
|
||||
}
|
||||
if (isAccessibilityServiceEnabled()) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_a11y_service_enabled_but_not_running)
|
||||
} else if (!getAccessibilityServiceTool().enableAccessibilityServiceAutomaticallyIfNeededAndWaitFor(2000)) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_no_accessibility_permission)
|
||||
}
|
||||
if (errorMessage != null) {
|
||||
AccessibilityServiceTool.goToAccessibilitySetting()
|
||||
getAccessibilityServiceTool().goToAccessibilitySetting()
|
||||
throw ScriptException(errorMessage)
|
||||
}
|
||||
}
|
||||
@@ -60,19 +51,13 @@ class AutoJs private constructor(application: Application) : com.stardust.autojs
|
||||
return
|
||||
}
|
||||
var errorMessage: String? = null
|
||||
if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(application, AccessibilityService::class.java)) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_auto_operate_service_enabled_but_not_running)
|
||||
} else {
|
||||
if (Pref.shouldEnableAccessibilityServiceByRoot()) {
|
||||
if (!AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(application, 2000)) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_enable_accessibility_service_by_root_timeout)
|
||||
}
|
||||
} else {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_no_accessibility_permission)
|
||||
}
|
||||
if (isAccessibilityServiceEnabled()) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_a11y_service_enabled_but_not_running)
|
||||
} else if (!getAccessibilityServiceTool().enableAccessibilityServiceAutomaticallyIfNeededAndWaitFor(2000)) {
|
||||
errorMessage = GlobalAppContext.getString(R.string.text_no_accessibility_permission)
|
||||
}
|
||||
if (errorMessage != null) {
|
||||
AccessibilityServiceTool.goToAccessibilitySetting()
|
||||
getAccessibilityServiceTool().goToAccessibilitySetting()
|
||||
if (!AccessibilityService.waitForEnabled(-1)) {
|
||||
throw ScriptInterruptedException()
|
||||
}
|
||||
@@ -95,6 +80,14 @@ class AutoJs private constructor(application: Application) : com.stardust.autojs
|
||||
return runtime
|
||||
}
|
||||
|
||||
private fun getAccessibilityServiceTool(): AccessibilityServiceTool {
|
||||
return AccessibilityServiceTool(application)
|
||||
}
|
||||
|
||||
private fun isAccessibilityServiceEnabled(): Boolean {
|
||||
return getAccessibilityServiceTool().isAccessibilityServiceEnabled()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -16,7 +16,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal|bottom"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:text="@string/powered_by_autojs"
|
||||
android:text="@string/text_powered_by_autojs"
|
||||
android:textColor="#dd000000"
|
||||
android:textSize="14sp"/>
|
||||
</FrameLayout>
|
||||
7
inrt/src/main/res/values-en/strings.xml
Normal file
7
inrt/src/main/res/values-en/strings.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="summary_not_showing_main_activity">Run script directly without showing main activity</string>
|
||||
<string name="text_a11y_service_enabled_but_not_running">Accessibility service enabled but not running (Re-enable or reboot the device)</string>
|
||||
<string name="text_not_showing_main_activity">Not showing main activity</string>
|
||||
<string name="text_settings">Settings</string>
|
||||
</resources>
|
||||
7
inrt/src/main/res/values-zh/strings.xml
Normal file
7
inrt/src/main/res/values-zh/strings.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="summary_not_showing_main_activity">启动应用后直接运行脚本</string>
|
||||
<string name="text_a11y_service_enabled_but_not_running">无障碍服务已启用但未运行 (尝试重新启用或重启设备)</string>
|
||||
<string name="text_not_showing_main_activity">不显示主界面</string>
|
||||
<string name="text_settings">设置</string>
|
||||
</resources>
|
||||
@@ -1,24 +1,8 @@
|
||||
<resources>
|
||||
<string name="app_name">inrt</string>
|
||||
<string name="text_no_accessibility_permission">无障碍服务未启动</string>
|
||||
<string name="text_auto_operate_service_enabled_but_not_running">无障碍服务已启用但没有运行,您可以尝试重新启用或重启手机</string>
|
||||
<string name="text_enable_accessibility_service_by_root_timeout">使用root权限启用无障碍服务失败</string>
|
||||
<string name="text_settings">设置</string>
|
||||
<string name="text_script_running">脚本运行</string>
|
||||
<string name="key_use_volume_control_running">key_use_volume_control_running</string>
|
||||
<string name="key_enable_accessibility_service_by_root">key_enable_accessibility_service_by_root</string>
|
||||
<string name="text_use_volume_to_stop_running">音量上键停止所有脚本</string>
|
||||
<string name="summary_enable_accessibility_service_by_root">开启后运行脚本会使用 Root 权限自动开启无障碍服务</string>
|
||||
<string name="text_enable_accessibility_service_by_root">使用 Root 权限自动启用服务</string>
|
||||
<string name="key_stable_mode">key_stable_mode</string>
|
||||
<string name="summary_stable_mode">开启后布局分析更稳定,但小部分脚本可能无法正常运行。重启无障碍服务生效</string>
|
||||
<string name="text_stable_mode">稳定模式</string>
|
||||
<string name="text_accessibility_service">无障碍服务</string>
|
||||
<string name="text_not_show_main_activity">不显示主界面</string>
|
||||
<string name="key_not_show_main_activity">key_not_show_main_activity</string>
|
||||
<string name="summary_not_show_main_activity">打开应用后直接运行脚本</string>
|
||||
<string name="text_others">其他</string>
|
||||
<string name="powered_by_autojs">Powered by Auto.js</string>
|
||||
<string name="text_execution_finished" formatted="false">[%s] 运行结束 (用时 %f 秒)</string>
|
||||
|
||||
<string name="key_not_showing_main_activity" translatable="false">key_not_showing_main_activity</string>
|
||||
<string name="summary_not_showing_main_activity">Run script directly without showing main activity</string>
|
||||
<string name="text_a11y_service_enabled_but_not_running">Accessibility service enabled but not running (Re-enable or reboot the device)</string>
|
||||
<string name="text_not_showing_main_activity">Not showing main activity</string>
|
||||
<string name="text_powered_by_autojs" translatable="false">Powered by AutoJs6</string>
|
||||
<string name="text_settings">Settings</string>
|
||||
</resources>
|
||||
|
||||
@@ -11,20 +11,20 @@
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_not_show_main_activity"
|
||||
android:summary="@string/summary_not_show_main_activity"
|
||||
android:title="@string/text_not_show_main_activity"/>
|
||||
android:key="@string/key_not_showing_main_activity"
|
||||
android:summary="@string/summary_not_showing_main_activity"
|
||||
android:title="@string/text_not_showing_main_activity"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/text_accessibility_service">
|
||||
android:title="@string/text_a11y_service">
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_enable_accessibility_service_by_root"
|
||||
android:summary="@string/summary_enable_accessibility_service_by_root"
|
||||
android:title="@string/text_enable_accessibility_service_by_root"/>
|
||||
android:key="@string/key_enable_a11y_service_with_root_access"
|
||||
android:summary="@string/summary_enable_a11y_service_with_root_access"
|
||||
android:title="@string/text_enable_a11y_service_with_root_access_automatically"/>
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
|
||||
Reference in New Issue
Block a user