![]() |
Firemonkey: Schreibrecht auf externer SD
Das ist ein Dauerbrenner, aber irgendwie finde ich nichts, was mir weiterhelfen würde.
Ich möchte für Android 7-8-9 den Dialog aufrufen, auf dem man ein Verzeichnis (in der Regel die ganze SD-Karte) angeben kann, um dort Schreibrechte zu erhalten. Das Ganze geht höchstwahrscheinlich mit einem Intent. Kann mir jemand weiterhelfen? |
AW: Firemonkey: Schreibrecht auf externer SD
Ist dieser Dialog auf purem Android (ohne FireMonkey) denn vorhanden und falls ja, wie ruft man ihn dort denn auf?
Nur um zu verstehen, was genau mit "den Dialog" gemeint ist. |
AW: Firemonkey: Schreibrecht auf externer SD
Seit langer Zeit - kann sein, schon seit Android 4.4 - ist das Sicherheitsfeature eingeführt worden, dass Apps nicht einfach auf den externen Speicher zugreifen können, sondern den Benutzer explizit um Erlaubnis bitten müssen. Dies geschieht beim ersten Start der App oder beim ersten Schreibversuch durch einen Dialog, in dem der Benutzer ein Verzeichnis auswählt, auf das die App zugreifen können soll. Ausprobieren kann man das zum Beispiel mit QuickPic, aber auch mit jedem Dateimanager.
|
AW: Firemonkey: Schreibrecht auf externer SD
Die "Runtime Permissions" wurde mit Android 6 eingeführt:
![]() Zur Anforderung der Runtime Permissions gab es hier im Forum vor wenigen Tagen Beiträge und Verweise auf fertige Lösungen, im Zusammenhang mit der Anhebung der Mindestanforderung von Android 8 im Play Store ( ![]() |
AW: Firemonkey: Schreibrecht auf externer SD
Ich habe natürlich vorher hier gesucht, aber nichts Richtiges gefunden. Auch bei Stackoverflow nicht. Vielleicht mit den falschen Suchbegriffen?
Es wäre nett, wenn du mir den Weg zu einer "fertigen Lösung" zeigen könntest. |
AW: Firemonkey: Schreibrecht auf externer SD
Hier ist ein Artikel mit Links zu einem Open Source Projekt:
![]() |
AW: Firemonkey: Schreibrecht auf externer SD
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 ![]() 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
Delphi-Quellcode:
:
TPermissionsRequester
Delphi-Quellcode:
Die diversen Shomessages habe ich eingebaut, um zu sehen, ob der Code ausgeführt wird. Wird er.
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; 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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz