Wenn ich unter Android M Preview 3 eine Ziel-API von 23 habe, kann ich anscheinend nicht die Berechtigung Manifest.permission.WRITE_SETTTINGS erwerben.
requestPermissions(new String[]{Manifest.permission.WRITE_SETTINGS},
101);
Die Berechtigung anfordern ruft nicht den Dialog auf, den ich erwarten würde, aber wenn ich den folgenden Aufruf ohne diese Berechtigung tätige,
RingtoneManager.setActualDefaultRingtoneUri(activity, RingtoneManager.TYPE_RINGTONE, ringUri);
Der Anruf wird nur, weil ich nicht die Erlaubnis habe.
Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. Gibt es eine neue Klingelton-API für 23? Oder hat diese Berechtigungsänderung es Nicht-System-Apps nur unmöglich gemacht, den Klingelton zu ändern?
quelle
dangerous
Ansatz für Laufzeitberechtigungen, den sie mit anderen Dingen in Android 6.0 gewählt haben. Ich werde überrascht sein, wenn sich dies bald ändert.intent.setData(Uri.parse("package:" + Context.getPackageName()));
Neben der Antwort von CommonsWare und dem Kommentar von Ogix gibt es hier einen Dummy-Code:
Das Fragment PopupwritePermission gibt dann ein Fenster an, in dem die Situation erklärt wird. Ein Klick auf die Schaltfläche OK öffnet das Android-Systemmenü, in dem die Berechtigung erteilt werden kann:
quelle
Die vorherigen Antworten sind großartig, ich habe nur wenig Ergänzung, um auch das Ergebnis für die Erlaubnis zu erhalten.
Und dann in der
Activity
:quelle
MainActivity.CODE_WRITE_SETTINGS_PERMISSION
?MainActivity.CODE_WRITE_SETTINGS_PERMISSION
?Dies ist ein vollständiges Beispiel:
quelle
Ab Android Marshmellow müssen Sie Laufzeitberechtigungen verwenden, die auf mehr Sicherheit abzielen, oder Berechtigungen verwenden, wenn hier eine Dokumentation erforderlich ist
Die Dokumentation zu den Schreibeinstellungen finden Sie hier
Im Manifest hinzufügen
In deiner Klasse
Und benutze es so
quelle
Die Erlaubnis
android.permission.WRITE_SETTINGS
ist jetzt in der Gruppesignature|appop|pre23|preinstalled
wieandroid.permission.CHANGE_NETWORK_STATE
undandroid.permission.SYSTEM_ALERT_WINDOW
Dies bedeutet, dass Sie es auf SDK 22 und darunter erhalten. In einer neueren Version müssen Sie ein App-Betreiber sein.
quelle
Ich habe unten wie verwendet ..
Offensichtliche Erlaubnis
quelle
Erwähnen Sie die folgende Erlaubnis in AndroidManifest.xml
In Aktivität unten verwenden, wenn sonst zum Ändern der Einstellung.
quelle