Android 6 widerrufen Sie Berechtigungen überprüft gewährt

Haben Sie ein problem hat-ich bin nicht sicher, ob ein bug ist oder nicht.

Wenn der Benutzer berechtigt eine und dann später widerruft, es scheint, dass checkSelfPermission gibt ERTEILT die Erlaubnis widerrufen.

z.B. es scheint, dass nach dem Widerruf der Erlaubnis.KAMERA:

true == ActivityCompat.checkSelfPermission(context, permission.CAMERA)
                            == PackageManager.PERMISSION_GRANTED

Die einzige Art, wie ich scheinen, um herauszufinden, dass die Kamera gesperrt wurde, ist durch eine Ausnahme:

10-20 14:25:54.330: E/AndroidRuntime(13954): java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Pictures/JPEG_20151020_142554_399504353.jpg} (has extras) } from ProcessRecord{adc5d77 13954:com.conx2share.conx2share.staging/u0a144} (pid=13954, uid=10144) with revoked permission android.permission.CAMERA
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.os.Parcel.readException(Parcel.java:1599)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.os.Parcel.readException(Parcel.java:1552)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2658)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1507)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.Activity.startActivityForResult(Activity.java:3917)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.Activity.startActivityForResult(Activity.java:3877)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:855)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:907)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:930)

Weiß jemand, ob das Benutzer-Fehler oder ein bug im neuen Berechtigungssystem?

  • Ich kann nicht reproduzieren Sie Ihr problem dieses sample-app. Ich starte das app, und es fragt nach Berechtigungen, auf den ersten run. Ich gewähre Ihnen, dann gehen Sie zu Einstellungen, und widerrufen Sie. Ich gehe zurück in die Beispiel-app, und klicken Sie auf die "Bild" - Taste. Die app erkennt korrekt, dass ich nicht die Berechtigungen und zeigt einen gelben banner zu diesem Effekt. Ich tippe auf "Foto aufnehmen" erneut, und ich bin aufgefordert, die Berechtigungen, die ich widerrufen. Getestet nur jetzt auf einem Nexus 5 laufen 6.0.
  • Gut zu wissen, es kann sein, user error dann, ich werde weiter Graben.
  • Guten Tag. Ich habe das gleiche problem. Der Punkt ist, dass die target-SDK-meine app ist nicht 23(Marshmallow), aber 22 (Lolipop). Ich starte meine app auf dem Nexus 5 mit android 6.0. Ich gehe auf Einstellungen und deaktiviere ich eine Berechtigung für meine app. Wenn ich zurück in meine app und call ContextCompat.checkSelfPermission() für meine Erlaubnis, das Ergebnis ist PERMISSION_GRANTED. Die Frage ist, wie zu erkennen, wurde die Erlaubnis entzogen app auf android 6.0-Gerät, wenn die app Ziele android 5.1 lolipop-api
  • Sollten Sie das nicht tun müssen, da Sie für Ihre app in 22, app-Berechtigungen sind standardmäßig gewährt.
InformationsquelleAutor Brill Pappin | 2015-10-20
Schreibe einen Kommentar