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());