public class BaseApplication extends Application {
private static String TEST= "test";
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtHandler());
}
class MyUncaughtHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
ex.printStackTrace();
// 将错误日志写在 mnt/sdcard/test/error.log
File errLog = new File(getFilePath() + "error.log");
try {
PrintStream printStream = new PrintStream(new FileOutputStream(errLog, true));
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date(System.currentTimeMillis()));
printStream.println("**********"+format+"**********");
ex.printStackTrace(printStream);
printStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// TODO 将日志文件上传到服务器
// 强制让应用退出
android.os.Process.killProcess(android.os.Process.myPid());
}
}
private String getFilePath() {
StringBuffer buffer = new StringBuffer();
String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
buffer.append(sdCardPath);
buffer.append(File.separator);
buffer.append(TEST);
buffer.append(File.separator);
if (createFile(buffer.toString())) {
return buffer.toString();
} else {
return null;
}
}
private boolean createFile(String path) {
File file = new File(path);
if (!file.exists() || !file.isDirectory()) {
return file.mkdirs();
}
return true;
}