如果应用程序崩溃,我想发送/data/anr/traces.txt,但问题是如何知道我的应用程序崩溃之前。
File file = new File("/data/anr/traces.txt");
if (file.exists()) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("subject", file.getName());
intent.putExtra("body", "...");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
if (file.getName().endsWith(".gz")) {
intent.setType("application/x-gzip");
} else if (file.getName().endsWith(".txt")) {
intent.setType("text/plain");
} else {
intent.setType("application/octet-stream");
}
// ? Can I send it without permission?
startActivity(intent);
}
答案 0 :(得分:6)
一种可靠的方法是使用“脏位”;在应用程序启动时将值写入文件,并在文件完全关闭时为文件写入不同的值。每次你的应用程序启动时,在写入之前检查文件中的内容;如果它不是你在应用程序干净地关闭时写的价值,你知道应用程序崩溃了。
答案 1 :(得分:2)
或者,您可以使用ACRA http://code.google.com/p/acra/。它将使您能够直接将崩溃报告发送到您的应用服务器/第三方服务器。