2015-08-28 18 views
15

Wie Sie aus meinem Manifest unten sehen können, habe ich die Erlaubnis hinzugefügt, Was fehlt mir?Android 6.0 Berechtigung Ablehnung: erfordert die Erlaubnis android.permission.WRITE_SETTINGS

<uses-permission-sdk-m android:name="android.permission.WRITE_SETTINGS" /> 
+0

https://developer.android.com/preview/features/runtime-permissions.html – Budius

+0

Ich hatte es bereits gelesen. Die Methode requestPermissions() funktioniert nicht, warum? – Dobin

+0

vielleicht sollten Sie das dann überprüfen: http://stackoverflow.com/help/on-topic und http://stackoverflow.com/help/dont-ask – Budius

Antwort

4

Es stellt sich heraus Sie einen anderen Mechanismus verwenden müssen WRITE_SETTINGS in Android gewährt werden 6. requestPermissions nicht funktioniert, aber CommonsGuy eine Abhilfe hier zur Verfügung gestellt hat: https://stackoverflow.com/a/32083622/238753

0

Dies ist ein Sonderfall: Berechtigungsstufe: Signatur,

Wenn die App auf API-Level 23 oder höher abzielt, muss der App-Nutzer der App diese Berechtigung explizit über einen Berechtigungsverwaltungsbildschirm erteilen.

Die App fordert die Zustimmung des Benutzers an, indem sie eine Absicht mit der Aktion ACTION_MANAGE_WRITE_SETTINGS sendet.

Die App kann durch Aufruf von Settings.System.canWrite() prüfen, ob diese Berechtigung vorliegt.

44

In API 23 oder höher Benutzer manuell für diese Erlaubnis genehmigen, können Sie durch calling- überprüfen 'Settings.System.canWrite' unten ist die Implementierung für diese: -

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       if (Settings.System.canWrite(context)) { 
        // Do stuff here 
       } 
       else { 
        Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS); 
        intent.setData(Uri.parse("package:" + getActivity().getPackageName())); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent); 
       } 
      } 
+3

Wie Kann ich das Ergebnis der Aktivität in einem anderen Zustand behandeln? Wie könnte ich wissen, ob meine App die Erlaubnis erteilt hat? – Mohammad

+3

@Mohammad können Sie wieder überprüfen '' '' onResume() '' '' – xorgate

+0

@xorgate Ja, das stimmt. Vielen Dank! – Mohammad

3
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (!Settings.System.canWrite(getApplicationContext())) { 
      Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName())); 
      startActivityForResult(intent, 200); 
     } 
    } 

diese klappt wunderbar.

Verwandte Themen