diff --git a/app/build.gradle b/app/build.gradle
index 0b2b88cb5..87af83ba9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -55,6 +55,7 @@ dependencies {
implementation 'androidx.preference:preference:1.2.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.room:room-runtime:2.4.3'
+ implementation 'cat.ereza:customactivityoncrash:2.4.0'
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
implementation 'com.github.bassaer:materialdesigncolors:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.13.2'
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
index f8a6b5dda..264ed3f82 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
@@ -15,12 +15,12 @@ import androidx.core.content.ContextCompat;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.R;
-import com.fongmi.android.tv.impl.SettingCallback;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.databinding.ActivitySettingBinding;
import com.fongmi.android.tv.event.RefreshEvent;
+import com.fongmi.android.tv.impl.SettingCallback;
import com.fongmi.android.tv.net.Callback;
import com.fongmi.android.tv.ui.custom.dialog.ConfigDialog;
import com.fongmi.android.tv.ui.custom.dialog.HistoryDialog;
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a96de494a..dfb50724a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -36,5 +36,10 @@
android:resource="@xml/file_paths" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java
index 9e9b62c80..f5e564ffd 100644
--- a/app/src/main/java/com/fongmi/android/tv/App.java
+++ b/app/src/main/java/com/fongmi/android/tv/App.java
@@ -2,6 +2,10 @@ package com.fongmi.android.tv;
import android.app.Application;
+import com.fongmi.android.tv.ui.activity.CrashActivity;
+
+import cat.ereza.customactivityoncrash.config.CaocConfig;
+
public class App extends Application {
private static App instance;
@@ -13,4 +17,10 @@ public class App extends Application {
public static App get() {
return instance;
}
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ CaocConfig.Builder.create().backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT).errorActivity(CrashActivity.class).apply();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java
new file mode 100644
index 000000000..4e9505db8
--- /dev/null
+++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java
@@ -0,0 +1,35 @@
+package com.fongmi.android.tv.ui.activity;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.viewbinding.ViewBinding;
+
+import com.fongmi.android.tv.R;
+import com.fongmi.android.tv.databinding.ActivityCrashBinding;
+
+import java.util.Objects;
+
+import cat.ereza.customactivityoncrash.CustomActivityOnCrash;
+
+public class CrashActivity extends BaseActivity {
+
+ private ActivityCrashBinding mBinding;
+
+ @Override
+ protected ViewBinding getBinding() {
+ return mBinding = ActivityCrashBinding.inflate(getLayoutInflater());
+ }
+
+ @Override
+ protected void initEvent() {
+ mBinding.details.setOnClickListener(v -> showError());
+ mBinding.restart.setOnClickListener(v -> CustomActivityOnCrash.restartApplication(this, Objects.requireNonNull(CustomActivityOnCrash.getConfigFromIntent(getIntent()))));
+ }
+
+ private void showError() {
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.crash_details_title)
+ .setMessage(CustomActivityOnCrash.getAllErrorDetailsFromIntent(this, getIntent()))
+ .setPositiveButton(R.string.crash_details_close, null)
+ .show();
+ }
+}
diff --git a/app/src/main/res/layout/activity_crash.xml b/app/src/main/res/layout/activity_crash.xml
new file mode 100644
index 000000000..ccda8d83f
--- /dev/null
+++ b/app/src/main/res/layout/activity_crash.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 9f7bbcb1f..9d26870e2 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -54,6 +54,13 @@
暂无播放数据
找不到数据
+
+ 发生意外错误\n抱歉给您带来不便
+ 重新启动
+ 错误信息
+ 错误信息
+ 关闭
+
%s 秒
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 54b68acc6..5399cbb9f 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -54,6 +54,13 @@
暫無播放資料
找不到資料
+
+ 發生意外錯誤\n抱歉給您帶來不便
+ 重新啟動
+ 錯誤訊息
+ 錯誤訊息
+ 關閉
+
%s 秒
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b9930fdc8..85ebfb9c3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -54,6 +54,13 @@
No episode data
Not found
+
+ An unexpected error occurred.\nSorry for the inconvenience.
+ Restart app
+ Error details
+ Error details
+ Close
+
%s s