1. 程式人生 > >Android mkdirs或mkdir一直返回false(createNewFile也失敗)

Android mkdirs或mkdir一直返回false(createNewFile也失敗)

昨天要寫一個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 = new
FileOutputStream(file, true); fos.write(sb.toString().getBytes()); fos.close(); }
需要在主介面去動態申請許可權即可解決問題!