我写了一些 android 应用程序,在做一些测试时它崩溃了。
但我不知道崩溃的原因..所以我需要将崩溃的原因保存在某个文件中,以便稍后我可以看到..因为在应用程序运行时我不会将它连接到 PC,我需要一些建议来保存崩溃的原因..?
只需执行以下操作:
try{
//your code which throws exception
}
catch(Exception e){
e.printStackTrace(); //optional
//save your exception in a text file on sd-card
}
稍后您可以阅读文本文件以了解例外情况
到目前为止我遇到的最好的方法是添加 Internet 权限,并使用ACRA。ACRA 允许您将报告发送到 Google Docs 电子表格,并用于测试和生产。
除了 ACRA,您还有两种选择:
try catch
并将数据保存在某处。抱歉,细节有限,但 android 还没有日志记录选项吗?
http://developer.android.com/reference/android/util/Log.html
我还没有尝试过,可能会选择 try,catch 答案,但这只是另一种选择。
你可以做一个 try catch 块:
try {
//the code lies here
} catch(Exception e) {
//here you can save the e.toString() to a FileOutputStream and then save the file
}
您需要使用应用程序类并设置“setDefaultUncaughtExceptionHandler”
public class YourApplication extends Application {
private Thread.UncaughtExceptionHandler defaultUEH;
// handler listener
private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// here I do logging of exception to a db
PendingIntent myActivity = PendingIntent.getActivity(getApplicationContext(),
192837, new Intent(getApplicationContext(), YourActivity.class),
PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager;
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
15000, myActivity);
System.exit(2);
// re-throw critical exception further to the os (important)
defaultUEH.uncaughtException(thread, ex);
}
};
public YourApplication() {
defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
// setup handler for uncaught exception
Thread.setDefaultUncaughtExceptionHandler(_unCaughtExceptionHandler);
}
}
并在 Android Manifest 的 application 标签中设置标签 name="your.app.application.YourApplication"