Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte (https://www.delphipraxis.net/192613-zugriffsprobleme-unter-android-lineageos-auf-externe-sd-karte.html)

bra 4. Mai 2017 17:20

Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte
 
Wir sind bei unserer App auf ein Problem gestoßen, wo wir aktuell nicht so recht wissen, ob das von Android allgemein, LineageOS oder unserer App selbst kommt.

Unsere App schreibt verschiedene Daten in das dafür vorgesehene Verzeichnis, z.B. [Speicher]/Android/com.embarcadero.Test. Beim Start der App kann man auswählen, ob auf die interne Karte geschrieben werden soll, oder falls vorhanden auf die externe SD-Karte.

Wir haben hier jetzt einige Geräte mit LineageOS 7.1.2, bei denen der Zugriff auf das Verzeichnis in der SD-Karte nicht möglich ist, zumindest nicht mit normalen App-Berechtigungen. Auch bei CyanogenMod mit Android 5.1 war das nicht möglich.

Bei meinem Sony-Smartphone mit dem Stock-Android 7.0 geht der Zugriff auf die externe Karte dagegen ohne Probleme.

Hat jemand von euch zufällig eine App, die mit Delphi (oder auch mit anderen Sprachen) geschrieben wurde, bei dem dieses Problem auch auftritt?

Dabei-seit-Turbo-Pascal-2 5. Mai 2017 14:17

AW: Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte
 
Mal schnell mit der Schrotflinte in Richtung des Problems geschossen:

Ist die SD-Karte vielleicht als Erweiterung des internen Speichers konfiguriert und nicht als eigenständiger externer Speicher?

Oder zeig doch mal den Code, der schreiben soll. Dann kann ich das auf meinen Android-Devices ausprobieren.

bra 8. Mai 2017 14:31

AW: Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, die externe SD ist normal als extern eingebunden.

Hier mal mein Testprojekt (funktioniert nur mit Android).

Dabei-seit-Turbo-Pascal-2 9. Mai 2017 07:46

AW: Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe Dein Testprojekt auf einem LG L90 mit Android 5.0.2 ausgeführt:

Beim ersten Start der App kam nach dem Drücken des "Internal"- oder des "External"-Buttons jeweils zweimal eine Messagebox mit "OK". Beim zweiten Drücken der Buttons kommt eine Fehlermeldung und danach einmal die Meldung "OK". Die Fehlermeldungen habe ich als Screenprint angehangen. Sie kommen nach jedem Buttonclick reproduzierbar wieder und auch nach einem kompletten Neustart der App, dann sofort beim ersten Buttonclick.

Lösche ich die Dateien "test.txt" und "testjava.txt" manuell über den Android-Dateimanager, werden sie beim nächsten Buttonclick wieder ohne Fehlermeldung angelegt.

Das entspricht genau dem programmierten Ablauf:

Delphi-Quellcode:
  if jf.createNewFile then
    ShowMessage('OK')
  else
    ShowMessage(s + ' konnte nicht erstellt werden!');
Ich vermute mal, Dein Problem ist, dass schon das erste Anlegen der Datei(en) fehlschlägt. Somit wäre das Problem bei mir nicht reproduzierbar.

Andernfalls wäre das Problem ja nur, dass die Datei nach dem ersten Anlegen existiert und damit nicht nochmal angelegt werden kann. Schreib doch mal, wie sich Dein Testprojekt verhält, wenn das Problem bei Dir auftritt.

Ist das Problem unabhängig vom Ordner, also tritt es auch auf, wenn Du in einen der "öffentlichen" Ordner wie "Downloads" oder "DCIM/Camera" (Fotos) speicherst?

bra 9. Mai 2017 08:57

AW: Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte
 
Ja, das Problem bei mir ist (aber nur bei einem Gerät mit LineageOS), dass das erste Anlegen schon nicht funktioniert - weder Verzeichnis, noch Datei. Da die Dateien nicht gelöscht werden, können durchaus Fehler kommen, wenn das initiale Anlegen schon funktioniert.

Dabei-seit-Turbo-Pascal-2 9. Mai 2017 09:06

AW: Zugriffsprobleme unter Android (LineageOS) auf externe SD-Karte
 
Ich hatte im ersten Post nicht wahrgenommen, dass Du Dich ausschließlich auf LineageOS beziehst. Da ich das nicht einsetze, kann ich dazu leider nichts sagen. Ich könnte hier zwar noch einen ganzen Zoo auch von älteren Android-Geräten testen, vermute aber mal, dass das nicht helfen würde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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