2014-09-10 106 views
0

我的Android應用程序強制關閉某些時候它是在device.I運行時間應用力要存儲錯誤日誌在device.So一個文本文件,我可以看到背後原因力量關閉。因爲當應用程序運行時很難識別何時發生突然的力量關閉。 你能否提供一些方法在SD卡上創建日誌文件?保存日誌文本文件的設備時,關閉在Android

在此先感謝。

我有以下代碼時添加該代碼的應用程序不強制關閉,和日誌文件後的應用程序的開始,但它顯示爲空。

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { 

     @Override 
     public void uncaughtException(Thread thread, Throwable ex) { 

      Log.e("UNCAUGHT EXCEPTION", thread.toString()); 
      Log.e("UNCAUGHT EXCEPTION", ""+ex.getMessage()); 
      try { 
       PrintWriter out = new PrintWriter("mnt/sdcard/log.txt"); 
       out.println(ex.getMessage()); 
       out.close(); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
      } 
    }); 
+0

請參閱我的更新問題 – Ravi 2014-09-10 18:57:22

回答

1

力閉合屏幕是一款Android默認顯示的指示,這不是處理在代碼中出現錯誤或異常:你不能覆蓋它,並防止它是要弄清楚,然後唯一的出路實際上處理您的代碼中發生的異常。

有設置一個全球性的異常處理程序,這將趕上其在該線程造成任何異常的一種方式。所以你把它設置在你的主要活動中,它將適用於每個子活動。

final UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); 
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { 

    public void uncaughtException(Thread thread, Throwable ex) { 
     // get the crash info 
     //log it into the file 
     defaultHandler.uncaughtException(thread, ex); 
    } 
}); 

編輯:

過這個傳來:

您可以試着ACRA (Application Crash Report for Android)庫:

ACRA是使Android應用程序自動發佈他們的崩潰報告的GoogleDoc庫形成。它的目標是android應用程序開發人員幫助他們在應用程序崩潰或行爲錯誤時從其獲取數據。

這很容易在你的應用程序安裝,高度可配置的,不需要你隨時隨地託管服務器腳本...報告發送到谷歌文檔電子表格!

還應考慮該Link

Thread.setDefaultUncaughtExceptionHandler(new your.package.UncaughtExceptionHandler());

後從谷歌super.onCreate

+0

我不想使用acra,因爲它需要服務器setup.I只是想保持我的日誌在文本文件。我的應用程序目前正處於發展階段。 – Ravi 2014-09-10 19:21:21

+0

嘗試'Thread.setDefaultUncaughtExceptionHandler(new your.package.UncaughtExceptionHandler());'把'super.onCreate'放在主活動中 – 2014-09-10 19:22:43

+0

你試過我發佈的答案嗎? – 2014-09-12 16:52:47

0

你可以嘗試使用Thread.setDefaultUncaughtExceptionHandler並保存在SD卡上從那裏異常信息。

+0

您可以添加更多詳細信息或代碼示例嗎? – lxg 2014-09-10 22:22:55

0

下載ghostlog應用play商店

它添加在lib文件夾:ghostlog - 集成 - 1.0.3。罐子

在mainfest:

<!--Receives intents from Ghost Log app to start & stop the integration service--> 
     <receiver android:name="com.readystatesoftware.ghostlog.integration.IntegrationReceiver" 
     android:permission="com.readystatesoftware.ghostlog.permission.READ_LOGS" > 
     <intent-filter> 
     <action android:name="com.readystatesoftware.ghostlog.integration.COMMAND" /> 
     </intent-filter> 
     </receiver> 
     <!--Reads logs and broadcasts them to Ghost Log--> 
     <service android:name="com.readystatesoftware.ghostlog.integration.IntegrationService" /> 

看到此鏈接https://github.com/jgilfelt/GhostLog並感謝傑夫Gilfelt

+0

我正在這樣做,看看例外 – sunil 2014-09-10 19:07:38

0

的一種方式這將是更容易做到這一點:

下載從谷歌應用程序目錄下載播放https://play.google.com/store/apps/details?id=com.nolanlawson.logcat&hl=en然後替換

e.printStackTrace(); 

Log.e("TAG FOR LOG e.g APP_NAME", Log.getStackTraceString(e)); 

之後,它會打印堆棧跟蹤到的logcat可以通過執行以下操作中找到:使用任何你所做的標記搜索欄

打開目錄下載應用程序,搜索在上面的日誌中。

+0

我只是想保持我的日誌文本file.My應用程序目前正處於發展階段 – Ravi 2014-09-10 19:21:57