0

Ich habe eine Klasse, die sich von DialogPreference erstreckt, die dem Benutzer ermöglicht, aus ihren Kalendern auszuwählen. Ab Android M muss der Benutzer zur Laufzeit die Berechtigung erteilen, dass die App auf die Kalender zugreifen kann. In einem Activity oder einem Fragment wäre dies normalerweise relativ einfach: ein Anruf zu ActivityCompat.requestPermissions(Activity [...]) oder FragmentCompat.requestPermissions(Fragment [...]) würde den Trick tun.Wie sollte man Berechtigungen von einer benutzerdefinierten Voreinstellung anfordern?

jedoch in einem DialogPreference, gibt es keine offensichtliche Möglichkeit, die Activity oder Fragment des Zugriffs auf die die DialogPreference verwendet. Es kann nicht garantiert werden, dass sich getContext() auf eine Aktivität bezieht, daher kann es unzuverlässig sein, das auf eine Activity zu übertragen. Die Verwendung von instanceOf schmilzt von Hässlichkeit und löst nicht das Problem, getContext() bezieht sich nicht auf Activity.

getDialog().getOwnerActivity() sieht vielversprechend aus, gibt aber null zurück, wenn es benötigt wird (z. B. während der DialogPreference 's onBindView() Methode).

Wie lautet die beste Vorgehensweise zum Anfordern von Berechtigungen, die von einer Preference benötigt werden? Soll die Anforderung für Berechtigungen vollständig aus dem Preference entfernt und in der PreferenceFragment platziert werden?

Antwort

1

Soll die Anforderung für Berechtigungen vollständig aus der Einstellung entfernt und in das PreferenceFragment platziert werden?

IMHO, ja. Genauer gesagt: Fordern Sie die Berechtigungen an, bevor Sie die Einstellungen anzeigen.

Verwandte Themen