剛剛開始使用ACRA。當應用程序崩潰時,它會向我的服務器發送報告。一切都很好。ACRA在不退出應用程序的情況下發送報告
但也有例外,我可以捕捉並讓用戶保持這個問題沒有錯誤 - 就像使用默認值。但是我想在不打擾用戶的情況下得到錯誤報告。但是當我這樣做時:
ErrorReporter errorReporter = ACRA.getErrorReporter();
errorReporter.putCustomData("test", "value");
errorReporter.handleSilentException(null);
應用程序關閉。我第一次嘗試拋出一些錯誤(測試目的),我希望發送null
會阻止應用程序停止 - 我錯了。
有沒有辦法在不退出應用程序的情況下使用ACRA發送錯誤報告?只是想我了吧,但
ErrorReporter errorReporter = ACRA.getErrorReporter();
errorReporter.putCustomData("test", "value");
errorReporter.handleException(null, false); // false is endApplication param, `null` seems to result in a NullPointerException
這也關閉應用程序(不使用來自ACRA額外的除外):
ErrorReporter errorReporter = ACRA.getErrorReporter();
errorReporter.putCustomData("test", "value");
errorReporter.handleException(new RuntimeException("message"), false); // tried `true` also, just in case
也關閉應用程序
更新:
( 1)LogCat顯示沒有堆棧跟蹤。
(2)在讀取錯誤報告,我的目光就落在了
"DUMPSYS_MEMINFO":"Permission Denial: can't dump meminfo from from pid=1416, uid=10048 without permission android.permission.DUMP\n"
嘗試添加android.permission.DUMP
到androidmanifest.xml
,但我得到Permission is only granted to system apps
。退出應用的原因是什麼?解決?它獲取我需要的所有信息(以及更多)...
我想你把'errorReporter.handleException(t,false); '在'catch'塊中,其中't'本身就是可拋出的。 –
@bigdestroyer是有道理的..但無濟於事......順便說一句,如果它會崩潰,我會在logcat中得到一個堆棧跟蹤 - 我應該添加我沒有在logcat中得到一個堆棧跟蹤 – Danielson
對於參考,相關代碼是[here](https://github.com/ACRA/acra/blob/ea3a57384425efa3af589bd0719747e9978fe338/src/main/java/org/acra/ErrorReporter.java#L690)。從這個'endsApplication = false'應該按照你的想法工作。應用程序如何終止?如果它引發異常,你能提供堆棧跟蹤嗎? – dhke