1. 程式人生 > >6.0版本有關SDCard讀寫許可權

6.0版本有關SDCard讀寫許可權

        //SDCard的狀態
        String state = Environment.getExternalStorageState();
        //判斷SDCard是否掛載上
        if (!Environment.MEDIA_MOUNTED .equals(state)) {
            return false;
        }
        //獲取SDCard的路徑 
        File directory = Environment.getExternalStorageDirectory();
        File file =
new File(directory, "user.txt");

以上程式碼在Android6.0 sdk23版本之前可以往記憶體卡中讀寫檔案操作。

我的華為手機5.0可以執行,在虛擬機器6.0版本上一直讀寫失敗並且報錯空指標異常。

原因是因為6.0對許可權的設定。具體怎麼寫程式碼我還不清楚,日後會補上。

將AndroidManifest.xml檔案中的

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/>

這裡寫圖片描述

這裡寫圖片描述

改為

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"android:maxSdkVersion="18"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"android:maxSdkVersion="18"/>

表示只在 API <= 18 時,才申請 WRITE_EXTERNAL_STORAGE 許可權。這樣使用者就無法在Android6.0系統的設定下面看到 儲存空間 許可權的開關,當然也就無法關閉它了,

這裡寫圖片描述