diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json
index cea4e9e4..3aa71845 100644
--- a/.changelog/lang_zh-Hans.json
+++ b/.changelog/lang_zh-Hans.json
@@ -31,7 +31,7 @@
"打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题",
"版本历史页面部分系统因字体差别导致统计数据显示不完整的问题",
"部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_",
- "ErrorDialogActivity 可能无法正常启动的问题 _[`issue #414`](http://issues.autojs6.com/414)_ _[`issue #340`](http://issues.autojs6.com/340#issuecomment-2973485826)_",
+ "ErrorDialogActivity 可能无法正常启动或短时间自动消失的问题 _[`issue #414`](http://issues.autojs6.com/414)_ _[`issue #340`](http://issues.autojs6.com/340#issuecomment-2973485826)_",
"崩溃报告页面复制详细信息功能失效的问题",
"APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题",
"构建工具启用 isCleanup[Paddle/Rapid]Ocr 配置选项时无法正常完成 Rebuild Project 任务的问题"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e04fda7b..4edd41cb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -223,11 +223,8 @@
android:targetActivity="org.autojs.autojs.ui.splash.SplashActivity">
-
-
-
-
-
-
-
-
-
@@ -321,8 +312,18 @@
android:name="org.autojs.autojs.ui.settings.DeveloperOptionsActivity"
android:theme="@style/AppTheme.Settings" />
-
-
+
+
+
+
+
+
-
-
-
@@ -449,73 +447,41 @@
android:exported="false">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -539,23 +505,14 @@
android:exported="true"
android:label="@string/text_edit_script">
-
-
-
-
-
-
-
-
-
@@ -566,23 +523,14 @@
android:taskAffinity="org.autojs.autojs.external.open.RunIntentActivity"
android:theme="@android:style/Theme.NoDisplay">
-
-
-
-
-
-
-
-
-
@@ -592,23 +540,14 @@
android:label="@string/text_import_script"
android:theme="@style/AppTheme.Transparent">
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/java/org/autojs/autojs/AbstractAutoJs.kt b/app/src/main/java/org/autojs/autojs/AbstractAutoJs.kt
index 175b0470..a266d4d6 100644
--- a/app/src/main/java/org/autojs/autojs/AbstractAutoJs.kt
+++ b/app/src/main/java/org/autojs/autojs/AbstractAutoJs.kt
@@ -82,7 +82,6 @@ abstract class AbstractAutoJs protected constructor(val application: Application
addAccessibilityServiceDelegates()
registerActivityLifecycleCallbacks()
WrappedShizuku.onCreate()
- ThemeColorManager.init()
}
private fun initContextFactory() {
diff --git a/app/src/main/java/org/autojs/autojs/App.kt b/app/src/main/java/org/autojs/autojs/App.kt
index 91583f67..f1ebfd4e 100644
--- a/app/src/main/java/org/autojs/autojs/App.kt
+++ b/app/src/main/java/org/autojs/autojs/App.kt
@@ -29,6 +29,7 @@ import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers
import org.autojs.autojs.ipc.InAppEventBus
import org.autojs.autojs.leakcanary.LeakCanarySetup
import org.autojs.autojs.pluginclient.DevPluginService
+import org.autojs.autojs.theme.ThemeColorManager
import org.autojs.autojs.timing.TimedTaskManager
import org.autojs.autojs.timing.TimedTaskScheduler
import org.autojs.autojs.tool.CrashHandler
@@ -58,21 +59,31 @@ class App : MultiDexApplication() {
GlobalAppContext.set(this)
instance = WeakReference(this)
- devPluginService = DevPluginService(this)
- setUpStaticsTool()
- setUpDebugEnvironment()
- setUpLeakCanary()
+ when {
+ ":crash_report".matchesProcessNameSuffix() -> {
+ ThemeColorManager.init()
+ setUpDefaultNightMode()
+ }
+ else /* Main process. */ -> {
+ devPluginService = DevPluginService(this)
- AutoJs.initInstance(this)
- GlobalKeyObserver.initIfNeeded(applicationContext)
- setupDrawableImageLoader()
- TimedTaskScheduler.init(this)
- initDynamicBroadcastReceivers()
- initMlKitContext()
- Toaster.init(this)
+ setUpStaticsTool()
+ setUpDebugEnvironment()
+ setUpLeakCanary()
- setUpDefaultNightMode()
+ AutoJs.initInstance(this)
+ GlobalKeyObserver.initIfNeeded(applicationContext)
+ setupDrawableImageLoader()
+ TimedTaskScheduler.init(this)
+ initDynamicBroadcastReceivers()
+ initMlKitContext()
+ Toaster.init(this)
+
+ ThemeColorManager.init()
+ setUpDefaultNightMode()
+ }
+ }
}
override fun attachBaseContext(base: Context) {
@@ -263,6 +274,10 @@ class App : MultiDexApplication() {
val app: App
get() = instance.get()!!
+ private fun String.matchesProcessNameSuffix(): Boolean {
+ return getProcessNameCompat().endsWith(this)
+ }
+
fun getProcessNameCompat(): String {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) getProcessName() else {
try {
diff --git a/app/src/main/java/org/autojs/autojs/tool/CrashHandler.kt b/app/src/main/java/org/autojs/autojs/tool/CrashHandler.kt
index c2538f3e..daa31892 100644
--- a/app/src/main/java/org/autojs/autojs/tool/CrashHandler.kt
+++ b/app/src/main/java/org/autojs/autojs/tool/CrashHandler.kt
@@ -9,7 +9,6 @@ import com.tencent.bugly.crashreport.CrashReport.CrashHandleCallback
import org.autojs.autojs.app.GlobalAppContext
import org.autojs.autojs.core.accessibility.AccessibilityService
import org.autojs.autojs.runtime.ScriptRuntime
-import org.autojs.autojs.util.ClipboardUtils
import org.autojs.autojs6.BuildConfig
import org.mozilla.javascript.RhinoException
import java.lang.Thread.UncaughtExceptionHandler
@@ -46,12 +45,13 @@ class CrashHandler(private val errorReportClass: Class<*>) : CrashHandleCallback
override fun uncaughtException(thread: Thread, ex: Throwable) {
Log.e(TAG, "Uncaught Exception", ex)
- ScriptRuntime.popException(ex.message ?: "Uncaught Exception")
+ // ScriptRuntime.popException(ex.message ?: "Uncaught Exception")
val latestMessage = ex.message ?: "[ No error message ]"
if (mCachedExceptionMessage.size > 4) {
if (mCachedExceptionMessage.all { it.get()?.message == latestMessage } || mCachedExceptionMessage.size > 20) {
ScriptRuntime.popException(latestMessage)
- ClipboardUtils.setClip(GlobalAppContext.get(), ex.stackTraceToString())
+ // ClipboardUtils.setClip(GlobalAppContext.get(), ex.stackTraceToString())
+ startCrashReportActivity("Uncaught Exception", ex.stackTraceToString())
exitProcess(1)
}
}
diff --git a/app/src/main/java/org/autojs/autojs/ui/error/CrashReportActivity.kt b/app/src/main/java/org/autojs/autojs/ui/error/CrashReportActivity.kt
index e3c3f893..16c44b99 100644
--- a/app/src/main/java/org/autojs/autojs/ui/error/CrashReportActivity.kt
+++ b/app/src/main/java/org/autojs/autojs/ui/error/CrashReportActivity.kt
@@ -55,7 +55,7 @@ class CrashReportActivity : BaseActivity() {
binding.restart.setOnClickListener { restart() }
binding.exit.setOnClickListener { exit() }
- savedInstanceState ?: copy()
+ // savedInstanceState ?: copy()
}
@Deprecated("Deprecated in Java")
diff --git a/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java b/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java
index a8afee22..a267338d 100644
--- a/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java
+++ b/app/src/main/java/org/autojs/autojs/ui/error/ErrorDialogActivity.java
@@ -38,10 +38,9 @@ public class ErrorDialogActivity extends BaseActivity {
.content(message)
.positiveText(positiveButtonText)
.positiveColorRes(R.color.dialog_button_default)
- .cancelable(true)
- .canceledOnTouchOutside(true)
+ .cancelable(false)
+ .canceledOnTouchOutside(false)
.onPositive((dialog, which) -> finish())
- .dismissListener(dialog -> finish())
.show();
MaterialDialogExtensions.makeTextCopyable(materialDialog, materialDialog.getContentView());