2012-04-02 89 views
2

Android ICS(api 14)使用以下信息引入了ApplicationErrorReport类: CrashInfo BatteryInfo和ANRInfo。从课堂概述看来,该课程似乎指的是安装在设备上的所有应用程序,而不是用于调试您自己的个人应用程序。 我似乎无法得到该信息(模拟崩溃和ANR的)如何从ApplicationErrorReport类获取崩溃信息?

我试过这段代码:

ApplicationErrorReport appp = new ApplicationErrorReport(); 
CrashInfo test = appp.crashInfo; 
Log.i(test.stackTrace); 

,但我得到的测试是null

如何获得崩溃信息?

回答

1

ApplicationErrorReport API它说:

ApplicationErrorReport()
创建ApplicationErrorReport未初始化的实例。

这意味着错误的“类型”是未定义的,所以它不是崩溃报告,因此crashinfo为空。

编辑: 我看了一下source code。您可以通过方法readFromParcel(in)实例化CrashInfo部件,其中包裹中的第一个int是对应于ApplicationErrorReport.TYPE_CRASH的int。或者,你可以自己创建一个CrashInfo对象,并将其分配给ApplicationErrorReport,但如果你想要填充CrashInfo数据,这又需要一个包裹。

我试过寻找它使用的代码,但唯一能找到的是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; 
}) 
+0

谢谢,你能详细说明这个代码吗? – senior 2012-04-02 11:25:38

+0

@senior检查我的编辑 – THelper 2012-04-02 12:07:23