external storage

  • Antworten:10
gesto
  • Forum-Beiträge: 6

14.01.2023, 11:43:03 via Website

Hallo,
in einer App schreibe und lese ich Daten in ein Unterverzeichnis von Download. Die Berechtigungen sin in der Manifest-Datei gegeben.
Nach einer Programmänderung und Neuinstallation ist die Berechtigung nicht mehr vorhanden.
Wenn ich das Smartphone neu starte, sind die Berechtigungen zwar wieder vorhanden, die zuvor gespeicherten Daten aber nicht mehr lesbar.
Programmiersprache ist Kotlin.
Hat jemand eine Lösung für das Problem?
Gruß Gesto

Kommentieren
gesto
  • Forum-Beiträge: 6

16.01.2023, 12:29:38 via Website

Hallo Stefan,
dann macht es aber keinen Sinn, den externen Speicher zu nutzen. Ich möchte nur auf die von mir erstellten Daten auch nach einer erneuten Installation meiner App zugreifen.
Gruß Gerd

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

16.01.2023, 13:02:01 via Website

Hallo Gerd,

dann widersprichst du dir selbst

Zitat :

in einer App schreibe und lese ich Daten in ein Unterverzeichnis von Download.

Du sprichst nicht von deinem eigenen Verzeichnis , sondern vom "Download" Verzeichnis

Das eigene /data Verzeichnis kannst du nachwievor - auch ohne Permissons beschreiben und lesen - nur halt nicht mehr "Fremde"

Und für z.b. die SD Karte musst du nun Scoped anwenden.

Nach einer Programmänderung und Neuinstallation ist die Berechtigung nicht mehr vorhanden

Nach der Neuinstallation solltest du natürlich die Permissions beim User runtime neu anfordern.

— geändert am 16.01.2023, 13:22:04

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Kommentieren
gesto
  • Forum-Beiträge: 6

16.01.2023, 13:35:22 via Website

Hallo Stefan,
sorry, bin noch nicht so in der Materie drin. Mit dem eigenen Verzeichnis meinte ich das Unterverzeichnis 'test' unter Download:

val dateiout: File = (Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_DOWNLOADS + "/test/$dateiname"))

Was meinst du mit eigenem /data Verzeichnis?

Gruß Gerd

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

16.01.2023, 13:53:41 via Website

Mit dem eigenen Verzeichnis meinte ich das Unterverzeichnis 'test' unter Download:

und das geht nicht mehr ..........
Begründung : (aus API Documentation)

You are welcome to request MANAGE_EXTERNAL_STORAGE permission, but unless you have a very good reason for it, your app may be rejected from the Play Store or other app distribution channels.

Wenn du etwas downloaden möchtest, so solltest Du das im App Verzeichnis tun. (getFilesDir() / getCacheDir() )
Jede App hat ihr eigenes ( für den User nicht sichtbares) / data Verzeichnis.
Wenn du mit ADB und AndroidStudio verbunden bist, dann kannst du es mit dem Tab "Device File Explorer" einsehen und überprüfen.

Ab Android 11 hast du auch keinen Zugriff mehr auf fremde Apps und deren Dateien.

Der Zugriff deiner App auf den externen Speicher muss nun umgestaltet werden.
(Voraussgesetzt du forderst auch die Permission beim User an !)

Hier ein Überblick - ich weis ja nicht, was du genau machen möchtet
https://medium.cobeisfresh.com/taming-file-storage-on-android-part-1-16756ce91182
https://developer.android.com/training/data-storage

Und hier ein paar schöner "Helfer"
https://stackoverflow.com/questions/62782648/android-11-scoped-storage-permissions
https://stackoverflow.com/questions/64221188/write-external-storage-when-targeting-android-10

— geändert am 16.01.2023, 14:07:49

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Pascal P.
Kommentieren
gesto
  • Forum-Beiträge: 6

16.01.2023, 13:59:31 via Website

Hallo Stefan,
vielen Dank für die Hilfe.
Werde mir die Links mal anschauen.

Hilfreich?
Kommentieren
gesto
  • Forum-Beiträge: 6

19.01.2023, 11:35:08 via Website

Hallo Stefan,
sorry, aber ich komme bei dem Thema nicht weiter.
Mir geht es ja nur darum, die Daten die meine App erzeugt, zu sichern.
Also die Daten im internen Bereich unter /data/data...
Im Netz habe ich gesehen, dass beim Deinstallieren eine Option für das Beibehalten der App-Daten erscheinen soll. Nicht bei mir.
Bei der Suche nach Einträgen in der Manifest.xml für diese Option wurde ich auch nicht fündig.

Gruß Gerd

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

19.01.2023, 12:02:43 via Website

Hallo Gerd,

natürlich wird dein /data Verzeichnis resp. auch der "files" & "cache" Pfad der App bei der Deinstallation gelöscht.
Wie kommst du darauf, dass das nicht passiert ? - Das wäre absolut Sinnfrei.

Wenn du deine Downloads irgendwo anders hinschreiben möchtest , dann musst du anders vorgehen und die Daten bleiben auf dem Gerät.

https://developer.android.com/training/data-storage/shared/documents-files

Warum willst du überhaupt die App nach dem Download deinstallieren ?

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Pascal P.
Kommentieren
gesto
  • Forum-Beiträge: 6

19.01.2023, 12:18:57 via Website

Hallo Stefan,
es geht nicht um Downloads. Die Daten, die ich speichern möchte, sind Konstellationen für meine App.
So wie die Spielstände und Levels bei einem Spiel.
Eine Deinstallation der App kann erforderlich sein, wenn ich im Android Studio debuggen möchte.
Ich arbeite mit Laptop und PC.
Aber der Link scheint vielversprechend.
Danke

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

19.01.2023, 12:25:27 via Website

Eine Deinstallation der App kann erforderlich sein, wenn ich im Android Studio debuggen möchte.

Egal ob du mit AS eine Release oder Debug Version per ADB managen willst.
Es wird in keiner Konstellation eine Deinstallation notwendig.

AS meckert zwar beim Wechsel, aber der /data Pfad bleibt erhalten.

Deshalb kann ich leider nicht nachvollziehen , warum eine deinstallation notwendig ist , wenn du mal "eben debuggen" mochtest.
Bis zum Final benutze ich immer die Debug version - tut dem Gerät ja nicht weh :-)

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Pascal P.
Kommentieren