Android ICS(api 14)引入了ApplicationErrorReport
类,其中包含以下信息:
CrashInfo BatteryInfo和ANRInfo。从类概述看,此类似乎是指设备上安装的所有应用程序,而不是用于调试您自己的个人应用程序。
我似乎无法获得这些信息(模拟崩溃和anr's)
我试过这段代码:
ApplicationErrorReport appp = new ApplicationErrorReport();
CrashInfo test = appp.crashInfo;
Log.i(test.stackTrace);
但我得到的测试是null
如何获取崩溃信息?
答案 0 :(得分:1)
在ApplicationErrorReport API中说:
ApplicationErrorReport()
创建一个未初始化的ApplicationErrorReport实例。
这意味着错误的“类型”是未定义的,因此它不是崩溃报告,因此crashinfo为null。
修改强>
我看了source code。您可以通过方法readFromParcel(in)
实例化CrashInfo部分,其中parcel中的第一个int
是与ApplicationErrorReport.TYPE_CRASH
对应的int。或者,您可以自己创建一个CrashInfo对象并将其分配给ApplicationErrorReport,但如果您想要填充CrashInfo数据,则还需要一个parcel。
我尝试查找使用它的代码,但我唯一能找到的是ApplicationManagerNative
(也使用parcel)。
case HANDLE_APPLICATION_CRASH_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
IBinder app = data.readStrongBinder();
ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
handleApplicationCrash(app, ci);
reply.writeNoException();
return true;
})