Android mkdirs或mkdir一直返回false(createNewFile也失敗)
阿新 • • 發佈:2019-01-26
昨天要寫一個Android自定義異常捕獲的類,然後把異常資訊儲存到手機中,需求很簡單,網上例子也很多,我用的是這個自定義異常捕獲,這段程式碼在Android6.0(不包括6.0)以下的手機上執行沒有問題,但是Android6.0增加了許可權管理,也即執行時許可權(參考android M執行時許可權解析以及Android6.0執行時許可權完全解析),需要在主Activity或Fragment介面去呼叫系統彈框讓使用者去申請許可權,由於此前沒意識到是許可權問題,dir.mkdirs一直建立失敗,網上找了很多都說是在AndroidManifest.xml中新增許可權申請就能解決問題,然而並沒有解決我的問題(因為我已經添加了這個許可權),系統依然報No such file or directory。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { String path = Environment.getExternalStorageDirectory需要在主介面去動態申請許可權即可解決問題!()+ File.separator+"AndoridCrashlog"+File.separator; File dir = new File(path); if (!dir.exists()) { dir.mkdirs();//出問題的位置 } File file = new File(path, fileName); Log.d(TAG, "CrashLogPath:" + file.getAbsolutePath()+fileName); if (!file.exists()) { file.createNewFile(); } FileOutputStream fos = newFileOutputStream(file, true); fos.write(sb.toString().getBytes()); fos.close(); }