我正在寫一個Android應用程序時出現一個相當奇怪的問題。Android:WRITE_EXTERNAL_STORAGE權限未被設備接受
在我的應用程序中,我使用意圖告訴手機的相機應用程序爲我拍照。拍完這張照片後,我想將新拍攝的照片註冊到設備的MediaStore內容提供商,以便在常規「圖庫」應用中顯示。
要做到這一點,我知道我需要WRITE_EXTERNAL_STORAGE權限,但即使它在我的清單中,我也會得到權限被拒絕的異常。我必須做些什麼才能獲得此許可?我正在運行Android 6.0.1。
這裏是我的權限XML在清單:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
下面是導致異常的代碼:
// insert photo into phone's main photo content provider
ContentResolver cr = getActivity().getContentResolver();
try {
MediaStore.Images.Media.insertImage(cr, photoFile.getPath(),
"Image Capture", "Custom Image capture");
} catch (FileNotFoundException foe) {
Log.e(DEBUG, foe.getMessage());
}
而這裏的例外,我得到:
java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=2436, uid=10041 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
編輯:我應該提一下:
現在我的應用程序使用getExternalFilesDir(Environment.DIRECTORY_PICTURES)
,它返回路徑/sdcard/Android/data/<package>/files/Pictures
來保存它的照片。我希望他們去攝像機應用程序通常放置在/sdcard/DCIM/Camera
。
是一本運行android棉花糖? – JoxTraex
您不需要存儲權限 - 您可以將該文件寫入由[getExternalMediaDirs()](http://developer.android.com/reference/android/content/Context.html#getExternalMediaDirs())返回的目錄中在棒棒糖+設備上。 – ianhanniballake
是的,我在Mashmallow 6.0.1上運行。 – RGrun