AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Firemonkey: Schreibrecht auf externer SD
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey: Schreibrecht auf externer SD

Ein Thema von Benmik · begonnen am 20. Okt 2018 · letzter Beitrag vom 20. Okt 2018
Antwort Antwort
Benmik

Registriert seit: 11. Apr 2009
560 Beiträge
 
Delphi 12 Athens
 
#1

Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 13:54
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?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 14:21
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.
Michael Justin
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
560 Beiträge
 
Delphi 12 Athens
 
#3

AW: Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 15:08
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 15:26
Die "Runtime Permissions" wurde mit Android 6 eingeführt:

https://developer.android.com/about/...id-6.0-changes

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 (https://developer.android.com/distri...lop/target-sdk)
Michael Justin
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
560 Beiträge
 
Delphi 12 Athens
 
#5

AW: Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 15:31
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 15:46
Hier ist ein Artikel mit Links zu einem Open Source Projekt:

https://www.delphiworlds.com/2018/06...her-continued/
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
560 Beiträge
 
Delphi 12 Athens
 
#7

AW: Firemonkey: Schreibrecht auf externer SD

  Alt 20. Okt 2018, 16:14
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?

Geändert von Benmik (20. Okt 2018 um 21:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz