Android ICS(api 14)引入了ApplicationErrorReport
类,其中包含以下信息:
CrashInfo BatteryInfo和ANRInfo。从类概述中,该类似乎是指设备上安装的所有应用程序,而不是用于调试您自己的个人应用程序。
我似乎无法获取该信息(模拟的崩溃和错误响应)
我尝试了这段代码:
ApplicationErrorReport appp = new ApplicationErrorReport();
CrashInfo test = appp.crashInfo;
Log.i(test.stackTrace);
但我得到的测试是
null
如何获取崩溃信息?
最佳答案
在ApplicationErrorReport API中说:
这意味着错误的“类型”是不确定的,因此它不是崩溃报告,因此crashinfo为null。
编辑:
我看了看source code。您可以通过readFromParcel(in)
方法实例化CrashInfo部分,其中包裹中的第一个int
是与ApplicationErrorReport.TYPE_CRASH
对应的int。另外,您可以自己创建一个CrashInfo对象,并将其分配给ApplicationErrorReport,但是如果要填充CrashInfo数据,则再次需要一个包裹。
我尝试查找使用它的代码,但是我唯一能找到的就是 ApplicationManagerNative
(也使用包裹)。
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;
})