Android-READ_EXTERNAL_STORAGE-Berechtigung funktioniert nicht
Ich versuche, erstellen Sie eine einfache app, die ein Bild aus der Galerie-app und display auf ein imageButton-Steuerelement. Ich Teste mit API-21, die auf einem Handy mit Android 5.0.1. Leider, egal was ich versuche ich bekomme immer wieder eine security-Fehlermeldung - auch wenn ich die Berechtigungen anzugeben.
Mein code für das abrufen von abrufen der Bild ist:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent){
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode){
case PICK_IMAGE_REQUEST:
if(resultCode == RESULT_OK && imageReturnedIntent != null && imageReturnedIntent.getData() != null) {
Uri uri = imageReturnedIntent.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
//Log.d(TAG, String.valueOf(bitmap));
ImageButton ib = (ImageButton) findViewById(R.id.inputImg);
ib.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
}
Der code funktioniert, wenn ich versuche, Sie zu wählen Sie ein Bild aus der Dropbox, aber wenn ich wählen Sie ein Bild aus der Galerie, bekomme ich
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/35634 from pid=25240, uid=10070 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
Machte ich die verwenden-Erlaubnis-tag für READ_EXTERNAL_STORAGE ein Kind manifestieren:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="[REDACTED]">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
<uses-permission tools:node="replace" android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
<application>
[REDACTED]
</application>
</manifest>
Ich habe gesucht hoch und niedrig auf andere posts, aber immer noch kann nicht scheinen, um herauszufinden, warum ich noch immer diese lästigen Fehler.
InformationsquelleAutor Zheryu | 2015-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
PROBLEM
Ihr habt den Fehler
URSACHE
Sie geben nicht korrekt Berechtigungen, da der
android:maxSdkVersion="18"
, die gemäß der Dokumentation.Solange Sie nicht die Berechtigungen für
API 21
Ihre app verhält, ok.Überprüfen dieses Thema für weitere Informationen.
LÖSUNG
Wenn du willst schreib-Berechtigungen unter
API 21
, müssen Sie deklarieren Sie als:WICHTIG:
Das macht nur Sinn, wenn Sie brauchen, um zu geben Ihnen einen zusätzlichen Berechtigungen, da einige alte api-Berechtigungen benötigen, dass neue Versionen nicht, so dass der Benutzer Erfahrung ist verbessert, da Sie nur bitten für bestimmte Berechtigungen, wenn nötig.
Also (in diesem Fall) der richtige Weg sein wird:
ADD-ON
Wenn Sie möchten, um Daten zu speichern, müssen Sie
WRITE_EXTERNAL_STORAGE
Berechtigungen.Gerne helfen 😉
InformationsquelleAutor Jordi Castilla
Ersetzen Sie einfach mit der unten und versuchen Sie,
InformationsquelleAutor r j
Beim Debuggen auf einigen Geräten müssen Sie die Erlaubnis erteilen, explizit durch gehen, um Ihre Einstellungen --> apps --> MY_APPLICATION --> Berechtigungen und gewähren Sie dann die erforderlichen Berechtigungen.
InformationsquelleAutor vimalp015
Zusätzlich zu den unten in AndroidManifest.xml
müssen wir auch die Erlaubnis in der Tätigkeit, für die app tatsächlich Zugriff auf externe Speichermedien. https://developer.android.com/training/permissions/requesting.html
InformationsquelleAutor Sridhar