我試圖從存儲讀取的圖像路徑和我一直在這裏得到拋出:SecurityException:不能要求READ_EXTERNAL_STORAGE許可
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=31409, uid=10053 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
我編譯反對API 23和有權限清楚我的清單描述爲直接我的Manifest的孩子。我也瞭解新運行時權限狀態,您需要在運行時請求權限以訪問存儲。當我寫這條線將開始檢查許可我得到一個無法解決的問題在IDE:
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
不能解析符號Manifest.permission.READ_EXTERNAL_STORAGE。唯一的Manifest.permission,我可以在我的代碼清楚地聲明Manifest.permission.C2D_MESSAGE沒有得到一個無法解決錯誤。有什麼我需要編譯來訪問代碼中的其他權限?
只是要清楚這是代碼,是給我的拋出:SecurityException塊:
public List<String> getCameraImagesFull(Context context) {
Cursor cursor = null;
String[] star = {"*"};
ArrayList<String> result = new ArrayList<>();
cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, star, null, null, MediaStore.MediaColumns.DATE_ADDED + " DESC");
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
result.add(path);
} while (cursor.moveToNext());
}
cursor.close();
}
return result;
}
這是拋出異常的行:
cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, star, null, null, MediaStore.MediaColumns.DATE_ADDED + " DESC");
而且這裏有所有的權限在我的清單中聲明:
<permission
android:name="com.example.gcm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
我只是想知道如何去請求燙髮ission所以我可以得到圖像路徑。當我針對任何Lollipop版本進行編譯時,這一切都能正常工作,只需在Marshmallow即時獲得SecurityExeption的新運行時權限即可。任何和所有幫助表示讚賞,謝謝提前
我認爲你在Android 6.0棉花糖面臨這個問題,我也面臨同樣的問題,但我無法請求讀取外部存儲的許可,你有什麼辦法嗎? – Herry
好吧,我發現它從您的評論下面的答案。 – Herry
你好,試試這個API級別23 http://stackoverflow.com/a/41221852/5488468 –