Android保存App異常信息到本地
本文實例為大家分享了Android保存App異常信息到本地的具體代碼,供大家參考,具體內(nèi)容如下
首先添加權(quán)限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
代碼
// 調(diào)用該方法造成異常
private void math() {
try {
int a = 0;
int b = 10;
int c = b / a;
} catch (Exception e) {
e.printStackTrace(); // Logcat打印異常
// 保存異常信息
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw, true));
saveException(this, sw.toString());
}
}
/**
* 保存異常信息到本地 Android/data/包名/files/Documents/exception/yyyyMMdd_app_exception.txt
* @param context 上下文
* @param errMsg 異常信息
*/
private void saveException(Context context, String errMsg) {
if (context == null || TextUtils.isEmpty(errMsg)) return;
FileOutputStream fos = null;
try {
// 創(chuàng)建目錄
String dirPath = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).getPath() + "/exception/";
File dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdirs();
}
// 根據(jù)當(dāng)天日期來生成文件名
String date = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).format(new Date());
// 創(chuàng)建文件
File file = new File(dirPath, date + "_app_exception.txt");
if (!file.exists()) {
file.createNewFile();
}
fos = new FileOutputStream(file, true);
fos.write(errMsg.getBytes());
fos.write("\n".getBytes());
fos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
效果如圖


可以考慮將當(dāng)前時間寫進(jìn)文件,更方便排查問題
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter permission_handler 權(quán)限插件的使用詳解
這篇文章主要介紹了Flutter permission_handler 權(quán)限插件的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
Android Vibrator調(diào)節(jié)震動代碼實例
這篇文章主要介紹了Android Vibrator調(diào)節(jié)震動代碼實例,本文直接給出實現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-05-05
Android通過手機(jī)拍照或從本地相冊選取圖片設(shè)置頭像
微信、QQ、微博等社交類APP如何更換自己的頭像,這篇文章主要介紹了Android通過手機(jī)拍照或從本地相冊選取圖片設(shè)置頭像,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Android 下載文件通知欄顯示進(jìn)度條功能的實例代碼
這篇文章主要介紹了Android 下載文件通知欄顯示進(jìn)度條功能的實例代碼,通過使用AsyncTask異步任務(wù)實現(xiàn),調(diào)用publishProgress()方法刷新進(jìn)度來實現(xiàn),具體代碼大家參考下本文2018-04-04
Android XRecyclerView實現(xiàn)多條目加載
這篇文章主要為大家詳細(xì)介紹了Android XRecyclerView實現(xiàn)多條目加載效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
Kotlin擴(kuò)展函數(shù)及實現(xiàn)機(jī)制的深入探索
擴(kuò)展函數(shù)與擴(kuò)展屬性的神奇之處在于,可以在不修改原來類的條件下,使用函數(shù)和屬性,表現(xiàn)得就像是屬于這個類的一樣。下面這篇文章主要給大家介紹了關(guān)于Kotlin擴(kuò)展函數(shù)及實現(xiàn)機(jī)制的相關(guān)資料,需要的朋友可以參考下2018-06-06
Android定制RadioButton樣式三種實現(xiàn)方法
三種方法實現(xiàn)Android定制RadioButton樣式:使用XML文件進(jìn)行定義/在JAVA代碼中定義等等,感興趣的朋友可以參考下,希望可以幫助到你2013-02-02

