Handle crashes more gracefully and allow opting out report
This commit is contained in:
parent
16702f9c38
commit
b546e7a75d
|
@ -34,6 +34,8 @@
|
|||
|
||||
<string name="games_listing">Available Dreamcast Games</string>
|
||||
|
||||
<string name="report_issue">Previous Crash Detected</string>
|
||||
|
||||
<string name="customize_touch_controls">Customize Touch Controls</string>
|
||||
<string name="launch_editor">Launch Editor</string>
|
||||
<string name="touch_vibration">Touch Vibration</string>
|
||||
|
|
|
@ -25,7 +25,6 @@ import android.view.View.OnTouchListener;
|
|||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.util.DreamTime;
|
||||
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
|
||||
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnOpenListener;
|
||||
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
|
||||
|
@ -65,22 +64,19 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
public void uncaughtException(Thread t, Throwable error) {
|
||||
if (error != null) {
|
||||
Log.e("com.reicast.emulator", error.getMessage());
|
||||
Toast.makeText(MainActivity.this,
|
||||
getString(R.string.platform),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
GenerateLogs mGenerateLogs = new GenerateLogs(MainActivity.this);
|
||||
mGenerateLogs.setUnhandled(error.getMessage());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
mGenerateLogs.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
|
||||
home_directory);
|
||||
} else {
|
||||
mGenerateLogs.execute(home_directory);
|
||||
}
|
||||
mPrefs.edit().putString("prior_error", error.getMessage()).commit();
|
||||
MainActivity.this.finish();
|
||||
}
|
||||
}
|
||||
};
|
||||
Thread.setDefaultUncaughtExceptionHandler(mUEHandler);
|
||||
|
||||
String prior_error = mPrefs.getString("prior_error", null);
|
||||
if (!prior_error.equals(null)) {
|
||||
initiateReport(prior_error);
|
||||
mPrefs.edit().remove("prior_error").commit();
|
||||
}
|
||||
|
||||
// Check that the activity is using the layout version with
|
||||
// the fragment_container FrameLayout
|
||||
if (findViewById(R.id.fragment_container) != null) {
|
||||
|
@ -264,6 +260,37 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
|
||||
}
|
||||
|
||||
private void initiateReport(final String error) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
||||
builder.setTitle(getString(R.string.report_issue));
|
||||
builder.setMessage(error);
|
||||
builder.setNegativeButton("Cancel",
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton("Report",
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Toast.makeText(MainActivity.this,
|
||||
getString(R.string.platform),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
GenerateLogs mGenerateLogs = new GenerateLogs(MainActivity.this);
|
||||
mGenerateLogs.setUnhandled(error);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
mGenerateLogs.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
|
||||
home_directory);
|
||||
} else {
|
||||
mGenerateLogs.execute(home_directory);
|
||||
}
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
builder.create();
|
||||
builder.show();
|
||||
}
|
||||
|
||||
public static boolean isBiosExisting() {
|
||||
File bios = new File(home_directory, "data/dc_boot.bin");
|
||||
return bios.exists();
|
||||
|
|
Loading…
Reference in New Issue