package com.njlabs.showjava.utils;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
import com.crashlytics.android.Crashlytics;
import com.njlabs.showjava.ui.JavaExplorer;
import java.io.PrintWriter;
import java.io.StringWriter;
/**
* Created by Niranjan on 27-05-2015.
*/
@SuppressWarnings({"FieldCanBeLocal", "StringBufferReplaceableByString"})
public class ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
private final String LINE_SEPARATOR = "\n";
private final String sourceDir;
private final String packageID;
public ExceptionHandler(Context context, String sourceDir, String packageID) {
this.myContext = context;
this.sourceDir = sourceDir;
this.packageID = packageID;
}
public void uncaughtException(Thread thread, Throwable exception) {
Crashlytics.logException(exception);
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
StringBuilder errorReport = new StringBuilder();
errorReport.append("************ CAUSE OF ERROR ************\n\n");
errorReport.append(stackTrace.toString());
Log.e("com.njlabs.showjava", errorReport.toString());
Toast.makeText(myContext, "There was an error decompiling this app. Showing incomplete source.", Toast.LENGTH_LONG).show();
Intent intent = new Intent(myContext, JavaExplorer.class);
intent.putExtra("java_source_dir", sourceDir);
intent.putExtra("package_id", packageID);
myContext.startActivity(intent);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);
}
}