[英]READ_EXTERNAL_STORAGE shows permission but not READ_EXTERNAL_STORAGE
[英]cannot request READ_EXTERNAL_STORAGE permission
我正在嘗試從存儲讀取圖像路徑,並且在這里不斷收到SecurityException:
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進行編譯,並具有在清單中明確聲明為清單的直接子代的權限。 我也了解,要訪問存儲時,必須在運行時期間請求新的運行時權限狀態。 當我編寫此行開始檢查權限時,我在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" />
我只是想知道我如何去請求該權限,以便我可以獲取圖像路徑。 當我針對任何Lollipop構建進行編譯時,只要使用棉花糖上的新運行時權限(即獲得SecurityExeption),這一切都可以工作。 任何和所有幫助表示贊賞,在此先感謝
無法解析符號Manifest.permission.READ_EXTERNAL_STORAGE
您需要為android.Manifest
添加一個import語句,就像對任何其他Java類所做的一樣。
我可以在代碼中明確聲明的唯一Manifest.permission是Manifest.permission.C2D_MESSAGE而沒有得到無法解決的錯誤
android.Manifest.permission
沒有這樣的值( C2D_MESSAGE
)。 我什至不知道在哪里有Manifest
類,帶有permission
內部類的,名為C2D_MESSAGE
的字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.