您的位置:首页 > 移动开发

Android Application 全局异常捕获

2016-01-05 14:23 483 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: