Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Wo speichert ihr programmspezifische Daten unter Android? (https://www.delphipraxis.net/181299-wo-speichert-ihr-programmspezifische-daten-unter-android.html)

bcvs 4. Aug 2014 11:42

Wo speichert ihr programmspezifische Daten unter Android?
 
Hallo zusammen,

Was ist eigentlich unter Android der offizielle Pfad für die Speicherung von programmspezifischen Daten (inis etc), also das Pendant zu CLSI_APPDATA unter Windows?

TPath.GetHomePath liefert mir /data/data/com.embarcadero.MyAppname/files

Auf meinem Handy ist /data/data aber leer. Stattdessen legen hier die meisten Apps ihre Daten unter /storage/sdcard0/Appname ab. Wie machts man es also am Besten?

ChristianG 5. Aug 2014 08:00

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
Möglicherweise unter den Ressourcen. Das habe ich zumindest mit meinen Styles gemacht und es läuft prima :)
ps: Das ist relativ blöd, dass niemand antwortet. :(

Union 5. Aug 2014 08:22

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
Der offizielle Pfad sollte tatsächlich TPath.GetHomePath sein. Unter Android ist das dann context.getFilesDir() .

mjustin 5. Aug 2014 08:28

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
Unter Android gibt es die Preference API - http://developer.android.com/guide/t.../settings.html
Diese sollte man auch aus Delphi heraus nutzen (können).

Links:

Saving settings in Android and iOS with XE5

Accessing Android's SharedPreferences class from Delphi

Beispiel:

Delphi-Quellcode:
var
  Prefs: JSharedPreferences;
  Editor: JSharedPreferences_Editor;
  I: Integer;
  F: Single;
  S: string;
begin
  Prefs := SharedActivity.getPreferences(TJActivity.JavaClass.MODE_PRIVATE);
  Editor := Prefs.edit;
  Editor.putInt(StringToJString('MyIntKey'), 999);
  Editor.putFloat(StringToJString('MyFloatKey'), 123.456);
  Editor.putString(StringToJString('MyStrKey'), StringToJString('This is a test'));
  Editor.apply;
  I := Prefs.getInt(StringToJString('MyIntKey'), 0);
  F := Prefs.getFloat(StringToJString('MyFloatKey'), 0);
  S := Prefs.getString(StringToJString('MyIntKey'), StringToJString(''));

bcvs 5. Aug 2014 10:24

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
So, jetzt habe ich auch selbst noch ein bischen herumgeforscht.

Falls die Daten ausschließlich von der eigenen App gelesen werden sollen, gehören sie nach TPath.GetHomePath.
Das hat für die Entwicklung allerdings zwei Nachteile:

1. Man kommt mit dem Windows-Explorer nicht ran um z.B. mal in eine von der App geschriebene Datei reinzuschauen, falls man das Handy nicht rooten will.

2. Nach jeder Neuinstallation aus der Delphi-IDE heraus werden alle Dateien gelöscht. Bei späteren Neuinstallationen aus dem Playstore ist das angeblich nicht mehr der Fall.

Ich man es jetzt so, dass ich während der Entwicklung meine Daten irgendwo unter
TPath.GetSharedDownloadsPath speichere und stelle das in der auszuliefernden App auf GetHomePath um.

Union 5. Aug 2014 12:50

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
Zitat:

Zitat von bcvs (Beitrag 1267513)
So, jetzt habe ich auch selbst noch ein bischen herumgeforscht.

1. Man kommt mit dem Windows-Explorer nicht ran um z.B. mal in eine von der App geschriebene Datei reinzuschauen, falls man das Handy nicht rooten will.

2. Nach jeder Neuinstallation aus der Delphi-IDE heraus werden alle Dateien gelöscht. Bei späteren Neuinstallationen aus dem Playstore ist das angeblich nicht mehr der Fall.

Du kommst aber über adb ran.

milo 6. Aug 2014 08:05

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
Zitat:

Zitat von Union (Beitrag 1267530)
Zitat:

Zitat von bcvs (Beitrag 1267513)
So, jetzt habe ich auch selbst noch ein bischen herumgeforscht.

1. Man kommt mit dem Windows-Explorer nicht ran um z.B. mal in eine von der App geschriebene Datei reinzuschauen, falls man das Handy nicht rooten will.

2. Nach jeder Neuinstallation aus der Delphi-IDE heraus werden alle Dateien gelöscht. Bei späteren Neuinstallationen aus dem Playstore ist das angeblich nicht mehr der Fall.

Du kommst aber über adb ran.

Was ist bitte ADB? :?:

Gruß Michael

mkinzler 6. Aug 2014 08:12

AW: Wo speichert ihr programmspezifische Daten unter Android?
 
Android Debug Bridge

http://developer.android.com/tools/help/adb.html


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