如何从ApplicationErrorReport类获取崩溃信息?

时间:2012-04-02 09:17:58

标签: android crash android-4.0-ice-cream-sandwich

Android ICS(api 14)引入了ApplicationErrorReport类,其中包含以下信息: CrashInfo BatteryInfo和ANRInfo。从类概述看,此类似乎是指设备上安装的所有应用程序,而不是用于调试您自己的个人应用程序。 我似乎无法获得这些信息(模拟崩溃和anr's)

我试过这段代码:

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

但我得到的测试是null

如何获取崩溃信息?

1 个答案:

答案 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;
})