Das sieht schon mal vielversprechend aus, vielen Dank.
Ich hoffe mal, die SMS-Berechtigung lässt sich einigermaßen einfach auf die Schreibberechtigung anwenden.
Dennoch ist die Aufgabe dermaßen häufig, dass ich schon denke, da müsste es doch etwas Fertiges geben. Dieses
Rad muss schon zigmal erfunden worden sein.
Edit1: Hab jetzt die Demo mit einiger Mühe zum Laufen gebracht. Dabei auch gleich noch mitbekommen, dass bei Android 8.0
das Debugging nicht funktioniert - vielen Dank auch.
Allerdings kommt nicht der von mir beschriebene Dialog, sondern die Berechtigung wird abgefragt und gesetzt. Jetzt bin ich mal gespannt, ob es auch in meiner Anwendung funktioniert. Würde mich eigentlich ein bisschen wundern, wäre aber natürlich ziemlich gut.
Edit2: Wie befürchtet funktioniert es nicht.
Das Ganze läuft über einen
TPermissionsRequester
:
Delphi-Quellcode:
FRequester := TPermissionsRequester.Create;
FRequester.OnPermissionsResult := PermissionsResultHandler;
FRequester.RequestPermissions([cPermissionReadExternalStorage, cPermissionWriteExternalStorage], cPermissionsCodeExternalStorage);
procedure TFrmBldAussort.PermissionsResultHandler(Sender: TObject; const ARequestCode: Integer; const AResults: TPermissionResults);
begin
ShowMessage('PermissionsResultHandler');
case ARequestCode of
cPermissionsCodeExternalStorage:
begin
If AResults.DeniedResults.Count = 0
then ShowMessage('Keine Berechtigungen abgelehnt.');
if AResults.AreAllGranted
then ShowMessage('Berechtigungen bestehen.')
else ShowMessage('Berechtigung besteht nicht.');
end;
end;
end;
Die diversen Shomessages habe ich eingebaut, um zu sehen, ob der Code ausgeführt wird. Wird er.
Aber die Rückmeldung lautet stets, dass alle Berechtigungen bestehen, auch, wenn dies nicht der Fall ist.
Ich kann über die Einstellungen die Berechtigungen direkt setzen. Verweigere ich sie, meldet die Routine dennoch, dass alle Berechtigungen erteilt wurden.
Die Original-Demo greift auf die Kamera zu, nachdem es die Speicherberechtigung geprüft hat. Ich habe die Kamera-App so konfiguriert, dass sie auf die externe SD-Karte schreibt. Verweigere ich bei der Kamera-App die Rechte, erscheint der Dialog und die Rechte werden auch gesetzt. Irgendwie scheint sich die Kamera-App von meinem Projekt und auch der Demo zu unterscheiden.
Ursprünglich hatte ich Level 24. Da in den Einstellungen stand, meine App sei für eine ältere Version, habe ich das
SDK auf 26 aktualisiert (das ist Oreo 8.0, was mein Tablet hat). Das hat aber auch nichts bewirkt, außer, dass der Hinweis verschwunden ist.
Weiß jemand weiter?