2015-07-22 67 views
1

剛剛開始使用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.DUMPandroidmanifest.xml,但我得到Permission is only granted to system apps。退出應用的原因是什麼?解決?它獲取我需要的所有信息(以及更多)...

+0

我想你把'errorReporter.handleException(t,false); '在'catch'塊中,其中't'本身就是可拋出的。 –

+0

@bigdestroyer是有道理的..但無濟於事......順便說一句,如果它會崩潰,我會在logcat中得到一個堆棧跟蹤 - 我應該添加我沒有在logcat中得到一個堆棧跟蹤 – Danielson

+1

對於參考,相​​關代碼是[here](https://github.com/ACRA/acra/blob/ea3a57384425efa3af589bd0719747e9978fe338/src/main/java/org/acra/ErrorReporter.java#L690)。從這個'endsApplication = false'應該按照你的想法工作。應用程序如何終止?如果它引發異常,你能提供堆棧跟蹤嗎? – dhke

回答

0

事實證明,上面的代碼是正確的。問題是,我已覆蓋ErrorReporter

new HttpSender(org.acra.sender.HttpSender.Method.PUT, org.acra.sender.HttpSender.Type.JSON, null) { 
      @Override 
      public void send(final Context context, final CrashReportData report) throws ReportSenderException { 
       super.send(context, report); 
       respondAsIfCrashing(); // not the real method name 
      } 
     }; 

的應用並沒有崩潰,它只是似乎這樣做,因爲respondAsIfCrashing方法。

警告DUMPSYS_MEMINFO":"Permission Denial: can't dump meminfo from from pid=1416, uid=10048 without permission android.permission.DUMP是,顯然,不是一個理由崩潰......(也許只是沒有寫設備?)

因此,使用

ErrorReporter errorReporter = ACRA.getErrorReporter(); 
errorReporter.handleException(new RuntimeException("message"), false); 

足夠

相關問題