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 @@ + + + + + + + +