私はストレージから画像のパスを読みしようとしていますし、私はここに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に対してコンパイルしていますと権限を明確に直接として、私のマニフェストに記載しています私のマニフェストの子供。新しいランタイムアクセス許可では、ストレージにアクセスするときに実行時にアクセス許可を求める必要があることを理解しています。私はパーミッションのチェックを開始すると、この行を書くとき、私はIDEで問題を解決することはできません取得する:
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
は、シンボルManifest.permission.READ_EXTERNAL_STORAGEを解決することはできません。 Manifest.permission.C2D_MESSAGEを取得せずにエラーを解決できないのは、私のコードで明確に述べることができる唯一のManifest.permissionです。コード内の他のアクセス権にアクセスするためにコンパイルする必要があるものがありますか?
だけ明確にすること、これが私に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ビルドに対してコンパイルするときに動作します.Marshmallowの新しい実行時アクセス権でSecurityExeptionを取得するだけです。任意およびすべてのヘルプは感謝事前に、高く評価され
あなたはAndroid 6.0 Marshmallowでこの問題に直面していると思いますが、私も同じ問題に直面していますが、外部ストレージの読み取り権を要求できません。 – Herry
私はあなたのコメントから答えを見つけました。 – Herry
こんにちはAPIレベル23のためにこれを試してください http://stackoverflow.com/a/41221852/5488468 –