簡體   English   中英

無法請求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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM