1. 程式人生 > >安卓向SD卡儲存資料時java.io.FileNotFoundException:(Permission denied)

安卓向SD卡儲存資料時java.io.FileNotFoundException:(Permission denied)

最近在上Android課學習時,需要向SD卡中新建一個data.txt檔案
但現實無法向外圍裝置(SD卡)儲存資料。
在AndroidManifest.xml也加了以下許可權配置資訊

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

但是並沒有用

java.io.FileNotFoundException
: /storage/emulated/0/data.txt (Permission denied)
  經過查詢,發現在Android6.0 就是API 23之後。APP需要動態獲取許可權。
需要用程式碼獲取許可權,這也是為了使用者資料更加安全。

這裡寫圖片描述
在Activity程式碼中如上圖加入這些程式碼就可以了。

 public static final int EXTERNAL_STORAGE_REQ_CODE = 10 ;

     int permission = ActivityCompat.checkSelfPermission(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE);

     if
(permission != PackageManager.PERMISSION_GRANTED) { // 請求許可權 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_REQ_CODE); }
動態申請許可權:

這裡寫圖片描述
點允許(allow)就行了