Ich habe die Berechtigungen in meinem manisfest für api 22-:Warum wird die Berechtigung verweigert, nachdem der Benutzer gefragt wurde?
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
android:maxSdkVersion="22" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
android:maxSdkVersion="22" />
<uses-permission
android:name="android.permission.READ_CONTACTS"
android:maxSdkVersion="22" />
<uses-permission
android:name="android.permission.WRITE_CONTACTS"
android:maxSdkVersion="22" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
und die Laufzeitprüfung für Berechtigungen als auch für api 23+:
private void requestGpsPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_CONTACTS)
!= PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS}, 1);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION}, 2);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE}, 3);
}
Und ich habe immer noch die Fehler:
Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/fs_id from pid=20520, uid=10089 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:605)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:480)
at android.content.ContentProvider$Transport.query(ContentProvider.java:211)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
at android.os.Binder.execTransact(Binder.java:453)
Failed to clear out contacts
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{9b0bd73 20520:com.google.android.apps.plus/u0a89} (pid=20520, uid=10089) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
at android.os.Parcel.readException(Parcel.java:1620)
at android.os.Parcel.readException(Parcel.java:1573)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3594)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4799)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2018)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1466)
at android.content.ContentResolver.query(ContentResolver.java:475)
at android.content.ContentResolver.query(ContentResolver.java:434)
at ddt.a(PG:447)
at ddt.b(PG:1396)
at ddu.run(PG:333)
at java.lang.Thread.run(Thread.java:818)
Ich versuche, die App in einem Android 6.0-Gerät auszuführen. Irgendeine Idee, wie man es löst?
Ihr Berechtigungsantrag-Code ist ziemlich seltsam, da Sie versuchen, drei separate Dialoge in eine Warteschlange zu stellen. Sind Sie darüber hinaus sicher, dass Sie darauf warten, dass dieser Thread ausgeführt wird (wo Ihr Absturz auftritt), bis Sie die Berechtigung erhalten haben? Denken Sie daran, dass 'requestPermissions()' asynchron ist - wenn diese Methode zurückkehrt, wurde der Benutzer noch nicht einmal * nach der Berechtigung gefragt, geschweige denn gewährt. – CommonsWare
Die in der Warteschlange befindlichen Dialoge sind kein Problem, sie erscheinen nacheinander, und ich rufe sie auf, sobald ich eine Aktivität starte, die keine Aktion ausführt, während die Dialoge angezeigt werden. Die Aktionen werden durch Klicken auf die Schaltfläche festgelegt. Und selbst wenn es ein Problem verursacht, werden die Dialoge nur einmal angezeigt, wenn ich die App neu starte, sind die Berechtigungen schon da und ich habe immer wieder den gleichen Fehler :-( – Erick