В ApplicationErrorReport API указано:
ApplicationErrorReport ()
Создайте неинициализированный экземпляр ApplicationErrorReport.
Это означает, что «тип» ошибки не определен, поэтому это не отчет о сбое, и поэтому crashinfo имеет значение null.
EDIT:
Я взглянул на исходный код . Вы можете создать экземпляр CrashInfo с помощью метода readFromParcel(in)
, где первый int
в посылке - это int, соответствующий ApplicationErrorReport.TYPE_CRASH
. В качестве альтернативы вы можете создать объект 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;
})