mirror of
https://github.com/MaintainTeam/LastPipeBender.git
synced 2025-03-05 05:20:44 +03:00
85 lines
2.1 KiB
Java
85 lines
2.1 KiB
Java
package us.shandian.giga.util;
|
|
|
|
import android.content.Context;
|
|
import android.content.pm.PackageInfo;
|
|
import android.os.Build;
|
|
import android.os.Environment;
|
|
|
|
import java.io.File;
|
|
import java.io.PrintWriter;
|
|
|
|
//todo: replace this by using the internal crash handler of newpipe
|
|
public class CrashHandler implements Thread.UncaughtExceptionHandler
|
|
{
|
|
public static final String CRASH_DIR = Environment.getExternalStorageDirectory().getPath() + "/GigaCrash/";
|
|
public static final String CRASH_LOG = CRASH_DIR + "last_crash.log";
|
|
public static final String CRASH_TAG = CRASH_DIR + ".crashed";
|
|
|
|
private static String ANDROID = Build.VERSION.RELEASE;
|
|
private static String MODEL = Build.MODEL;
|
|
private static String MANUFACTURER = Build.MANUFACTURER;
|
|
|
|
public static String VERSION = "Unknown";
|
|
|
|
private Thread.UncaughtExceptionHandler mPrevious;
|
|
|
|
public static void init(Context context) {
|
|
try {
|
|
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
|
|
VERSION = info.versionName + info.versionCode;
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
|
|
public static void register() {
|
|
new CrashHandler();
|
|
}
|
|
|
|
private CrashHandler() {
|
|
mPrevious = Thread.currentThread().getUncaughtExceptionHandler();
|
|
Thread.currentThread().setUncaughtExceptionHandler(this);
|
|
}
|
|
|
|
@Override
|
|
public void uncaughtException(Thread thread, Throwable throwable) {
|
|
File f = new File(CRASH_LOG);
|
|
if (f.exists()) {
|
|
f.delete();
|
|
} else {
|
|
try {
|
|
new File(CRASH_DIR).mkdirs();
|
|
f.createNewFile();
|
|
} catch (Exception e) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
PrintWriter p;
|
|
try {
|
|
p = new PrintWriter(f);
|
|
} catch (Exception e) {
|
|
return;
|
|
}
|
|
|
|
p.write("Android Version: " + ANDROID + "\n");
|
|
p.write("Device Model: " + MODEL + "\n");
|
|
p.write("Device Manufacturer: " + MANUFACTURER + "\n");
|
|
p.write("App Version: " + VERSION + "\n");
|
|
p.write("*********************\n");
|
|
throwable.printStackTrace(p);
|
|
|
|
p.close();
|
|
|
|
try {
|
|
new File(CRASH_TAG).createNewFile();
|
|
} catch (Exception e) {
|
|
return;
|
|
}
|
|
|
|
if (mPrevious != null) {
|
|
mPrevious.uncaughtException(thread, throwable);
|
|
}
|
|
}
|
|
}
|
|
|