Error report: added FatalErrorActivity

This commit is contained in:
khanhduytran0 2020-08-01 14:16:21 +07:00
parent 6986c58853
commit 21eb5c0aa5
5 changed files with 35 additions and 6 deletions

View File

@ -27,6 +27,11 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:screenOrientation="sensorLandscape"
android:name=".FatalErrorActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity <activity
android:screenOrientation="sensorLandscape" android:screenOrientation="sensorLandscape"

View File

@ -0,0 +1,15 @@
package net.kdt.pojavlaunch;
import android.support.v7.app.*;
import android.os.*;
public class FatalErrorActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Throwable th = (Throwable) getIntent().getExtras().getSerializable("throwable");
Tools.showError(this, R.string.error_fatal, th, true);
}
}

View File

@ -8,6 +8,7 @@ import net.kdt.pojavlaunch.prefs.*;
import net.kdt.pojavlaunch.value.customcontrols.*; import net.kdt.pojavlaunch.value.customcontrols.*;
import android.support.v7.preference.*; import android.support.v7.preference.*;
import java.io.*; import java.io.*;
import android.content.*;
public class PojavApplication extends Application public class PojavApplication extends Application
{ {
@ -40,8 +41,10 @@ public class PojavApplication extends Application
new File(Tools.CTRLMAP_PATH).mkdirs(); new File(Tools.CTRLMAP_PATH).mkdirs();
new CustomControls(this).save(Tools.CTRLDEF_FILE); new CustomControls(this).save(Tools.CTRLDEF_FILE);
} catch (Exception e) { } catch (Throwable th) {
Tools.showError(this, e, true); Intent ferrorIntent = new Intent(this, FatalErrorActivity.class);
ferrorIntent.putExtra("throwable", th);
startActivity(ferrorIntent);
} }
} }
} }

View File

@ -172,10 +172,15 @@ public final class Tools
public static void showError(final Context ctx, final Throwable e, final boolean exitIfOk) public static void showError(final Context ctx, final Throwable e, final boolean exitIfOk)
{ {
showError(ctx, e, exitIfOk, false); showError(ctx, R.string.global_error, e, exitIfOk, false);
} }
private static void showError(final Context ctx, final Throwable e, final boolean exitIfOk, final boolean showMore) public static void showError(final Context ctx, final int titleId, final Throwable e, final boolean exitIfOk)
{
showError(ctx, titleId, e, exitIfOk, false);
}
private static void showError(final Context ctx, final int titleId, final Throwable e, final boolean exitIfOk, final boolean showMore)
{ {
Runnable runnable = new Runnable(){ Runnable runnable = new Runnable(){
@ -184,7 +189,7 @@ public final class Tools
{ {
final String errMsg = showMore ? Log.getStackTraceString(e): e.getMessage(); final String errMsg = showMore ? Log.getStackTraceString(e): e.getMessage();
new AlertDialog.Builder((Context) ctx) new AlertDialog.Builder((Context) ctx)
.setTitle(R.string.global_error) .setTitle(titleId)
.setMessage(errMsg) .setMessage(errMsg)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){
@ -205,7 +210,7 @@ public final class Tools
@Override @Override
public void onClick(DialogInterface p1, int p2) public void onClick(DialogInterface p1, int p2)
{ {
showError(ctx, e, exitIfOk, !showMore); showError(ctx, titleId, e, exitIfOk, !showMore);
} }
}) })
.setNeutralButton(android.R.string.copy, new DialogInterface.OnClickListener(){ .setNeutralButton(android.R.string.copy, new DialogInterface.OnClickListener(){

View File

@ -51,6 +51,7 @@
<string name="alerttitle_installoptifine">Select OptiFine jar file</string> <string name="alerttitle_installoptifine">Select OptiFine jar file</string>
<!-- Error messages --> <!-- Error messages -->
<string name="error_fatal">Fatal error</string>
<string name="error_checklog">Error! Please check the log below: %s</string> <string name="error_checklog">Error! Please check the log below: %s</string>
<string name="error_no_version">No version!</string> <string name="error_no_version">No version!</string>
<string name="error_load_version">Unable to load version %s</string> <string name="error_load_version">Unable to load version %s</string>