![]() |
requestLegacyExternalStorage im AndroidManifest
In der Google Konsole habe ich gesehen, dass meine APP die Berechtigung "android:requestLegacyExternalStorage="true"" enthalten soll.
Das habe ich nicht extra ausgewählt, sondern scheint im Standardmanifest schon zu sein. Ich habe nur eine INI Datei, die unter
Delphi-Quellcode:
liegt.
fDir := TPath.GetDocumentsPath + TPath.DirectorySeparatorChar;
Kann ich die Berechtigung auch auf False setzen? |
AW: requestLegacyExternalStorage im AndroidManifest
Ich habe diese nun im AndroidManifest gelöscht und dann eine neue Version hochgeladen. Leider kommt die Meldung im Store.
Hat hier jemand mehr Wissen und möchte das mit uns teilen? |
AW: requestLegacyExternalStorage im AndroidManifest
Generell solltest du im Google-Play-Store-Postfach auch eine Info haben, was du ab dem 05.Mai beachten sollst, da Updates sonst nicht mehr hochladbar sind.
Habe ich mir diese Woche auch als todo auf die Agenda gestellt, ich habe es mir im Detail noch nicht angeschaut und fleißig das letzte notwendige Update gestern hochgeladen, damit ich ein paar Tage Zeit habe. |
AW: requestLegacyExternalStorage im AndroidManifest
Zitat:
Aber vielleicht kannst du in ein paar Tagen berichten, wie es bei dir lief. |
AW: requestLegacyExternalStorage im AndroidManifest
Du kannst die erstellte APK mit 7-Zip entpacken.
Und dort in den XML im RootVerzeichnis schauen, ob sich dieses requestLegacyExternalStorage doch noch drin befindet. (eventuell auch nochmal mit einem Suchprogramm in allen anderen Dateien suchen) |
AW: requestLegacyExternalStorage im AndroidManifest
Zitat:
Ich habe dann die "aab" Datei geöffnet. Leider habe ich den o.g. Parameter nicht gefunden. Als Gegenbeweis habe ich mal nach "hardwareAccelerated" gesucht. Diesen Parameter habe ich dann mehrmals gefunden. |
AW: requestLegacyExternalStorage im AndroidManifest
Wenn du einen Pfad aus
Delphi-Quellcode:
nutzt, musst du aber doch in deiner App mehr Permissions nutzen, damit dies erlaubt ist oder nicht? Spontan würde ich sagen, dass dies die folgenden sein sollten:
fDir := TPath.GetDocumentsPath + TPath.DirectorySeparatorChar
Delphi-Quellcode:
und auch hierzu sollten in der Mail Infos stehen. Dieser Pfad dürfte eigentlich nicht mehr erlaubt sein oder du musst es begründen können (z.B. Hersteller von File-Explorer-Apps).
PermissionsService.RequestPermissions(['android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE'], ReadExternalStorageRequestResult);
|
AW: requestLegacyExternalStorage im AndroidManifest
Zitat:
Wo gibt es sonst einen Platz, um meine Ini zu speichern? |
AW: requestLegacyExternalStorage im AndroidManifest
Ich speichere meine Daten unter Android in
appPath:=TFileUtils.adjustDir(System.IOUtils.TPath .GetPublicPath()); Dies ist laut Delphi-Doku Android: /storage/emulated/0/Android/data/<application ID>/files Dein Pfad ist laut Delphi-Doku Android: /data/data/<application ID>/files Ob dies hier einen Unterschied macht, kann ich dir leider nicht sagen. Da es an sich unterhalb der Application-ID ist, sollte es in der Theorie passen. Da gebe ich dir recht. Hast du die Entitlements im Projekt mal angeschaut, ob dort noch eines gesetzt ist, was nicht mehr sein sollte? |
AW: requestLegacyExternalStorage im AndroidManifest
Zitat:
|
AW: requestLegacyExternalStorage im AndroidManifest
|
AW: requestLegacyExternalStorage im AndroidManifest
Da bin ich mir gerade unsicher. Im Englischen heißen die beiden relevanten Listen:
- Entitlement List - Uses Permissions In der Entitlement List gibt es ein "Secure File Sharing", keine Ahnung, ob dies noch so erlaubt ist. In den Uses Permissions gibt es "Read External Storage" und "Write External Storage". Diese Punkte haben zumindest das Potential jetzt nicht mehr so einfach gültig zu sein. Ich freue mich schon total darauf, dass alles durchzutesten. |
AW: requestLegacyExternalStorage im AndroidManifest
Deine ini gehört in einen App lokalen Pfad, also nicht ein öffentliches Verzeichnis.
Also z.B. TPath.GetHomePath. |
AW: requestLegacyExternalStorage im AndroidManifest
GetDocumentsPath und GetHomePath ist unter Android das gleiche Verzeichnis und auch GetPublicPath zeigt nicht auf ein öffentliches, sondern ein Applikationsverzeichnis:
TPath.GetDocumentsPath (nutzt der Verfasser) /data/data/<application ID>/files TPath.GetHomePath /data/data/<application ID>/files TPath.GetPublicPath (nutze ich) /storage/emulated/0/Android/data/<application ID>/files Die Pfade sollten für Ini-Files also alle erlaubt sein. |
AW: requestLegacyExternalStorage im AndroidManifest
Je nach Geräte-Hersteller können die Pfade auch etwas abweichen,
aber im Großen und Ganzen ist das Schema überall ähnlich. |
AW: requestLegacyExternalStorage im AndroidManifest
Zitat:
Mal sehen, was eure Ergebnisse bringen, wenn ihr den/das Token in der Überschrift aus dem Manifest entfernt. |
AW: requestLegacyExternalStorage im AndroidManifest
Ja, viele Gerätehersteller passen ihr Android etwas an,
auch was das Speicherlayout betrifft. Und auch je nach Android-Version kann es sich mal verändern. Vor allem, wenn man im Android auch noch das MultiUser aktiviert, wonach es bei dir aussieht. (kann aber auch sein, dass es so schon vorbereitet ist, selbst wenn noch nicht aktiv) Im Android besteht das Dateisystem aus vielen als "Verzeichnis" gemappten Partitionen, oder auch die SD-Card hat ein/zwei Verzeichnisse, und auch viele Dateien sind als Verzeichnisse eingebunden. (z.B. oft für das Userverzeichnis, je Benutzer) Wie im Windows, können diese Verzeichnisse sich halt auch verschieben, drum gibt es ja diese Funktionen zum Auslesen des gewünschten Verzeichnisnamens. :zwinker: Man kann sie sogar im aktuellen System wo anders hin tun, passiert vielleicht auch mal bei einem Update, oder sogar als Benutzer z.B. auf eine andere Partition/Festplatte/Netzlaufwerk verschieben. (im Android/iOS ist aber vieles gesperrt, drum macht sowas selten jemand selbst) |
AW: requestLegacyExternalStorage im AndroidManifest
Danke für eure Hinweise.
Eigentlich will ich ja nur meine Einstellungen irgendwo sichern. Ich muss auf keine weiteren Dateien zugreifen. Den Schlüssel im Manifest habe ich ja gelöscht, aber trotzdem kommt die Meldung im Store, dass das Flag immer noch da wäre. Mal sehen, ob die Meldung im nächsten Update immer noch kommt. Das Manifest sollte doch nur einmalig da sein für 32 und 64 bit?? |
AW: requestLegacyExternalStorage im AndroidManifest
Zitat:
egal ob mit/ohne, das Letztere kommt immer mit in das Template. |
AW: requestLegacyExternalStorage im AndroidManifest
Also bei mir hat es geklappt. Ich habe folgendes tun müssen:
- Zeile mit requestLegacyExternalStorage aus dem Manifest rausgenommen - ReadExternalStorage und WriteExternalStorage aus den Project-Permissions für Android-64 rausgenommen - Abfrage im Code für ReadExternalStorage und WriteExternalStorage rausgenommen - meine externen Dateizugriffe auf SAF umgestellt Die App ist seit heute Nachmittag so im Store aktualisiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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