2017-07-10 9 views
0

Ich bin mir nicht sicher, ob dies der richtige Ort ist, um diese Frage zu stellen, aber ich kann nirgendwo Hilfe finden. Ich versuche this application to work zu bekommen, aber ich habe einige Fehler bekommen.Android Studio Permission Denial

Durch Klicken auf „Open-Galerie“, um sofort ganze app mit diesem Fehler abstürzt:

FATAL EXCEPTION: main 
Process: com.niel.galleryphotoapp, PID: 3691 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.niel.galleryphotoapp/com.niel.galleryphotoapp.HomeFragmentActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=3691, uid=10086 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
    Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=3691, uid=10086 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 
at android.os.Parcel.readException(Parcel.java:1684) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 
at android.content.ContentProviderProxy.query(ContentProviderNative.java:421) 
at android.content.ContentResolver.query(ContentResolver.java:532) 
at android.content.ContentResolver.query(ContentResolver.java:474) 
at com.niel.galleryphotoapp.DeviceImageManager.getPhoneAlbums(DeviceImageManager.java:34) 
at com.niel.galleryphotoapp.HomeFragmentActivity.onCreate(HomeFragmentActivity.java:80) 
at android.app.Activity.performCreate(Activity.java:6679) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
at android.app.ActivityThread.-wrap12(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:154)  
at android.app.ActivityThread.main(ActivityThread.java:6119)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  

Ich weiß nicht, warum es geschieht, überprüfte ich das Manifest und es scheint, dass die erforderlichen Berechtigungen sind.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Ich benutze Android Studio 2.3.3 + Nexus 4 API 25 Emulator.

Antwort

2

Wie cjnash sagte, Sie müssen auch für die Laufzeitberechtigungen fragen. Wenn Sie einen schnellen Weg brauchen, um es einfach auszuprobieren, können Sie in Ihre Geräteeinstellungen gehen und Ihrer App manuell die Berechtigungen geben, die sie zum Ausführen benötigt.

3

Obwohl Sie Berechtigungen in Ihr Manifest aufgenommen haben, müssen Sie auch Laufzeitberechtigungen anfordern. Alles, was Sie wissen müssen, ist hier:

https://developer.android.com/training/permissions/requesting.html

+0

Gibt es einen Weg, um es ohne es laufen zu lassen (Berechtigungen vorübergehend zu deaktivieren)? Der Autor dieser Anwendung hatte eindeutig eine Möglichkeit, dies zu tun (Sie können es auf Screenshots sehen). –

Verwandte Themen