Перейти к содержанию
Fire Monkey от А до Я
  • 0

Куда сохранять настройки и данные Android-приложения?


Major

Вопрос

Подскажите плиз, куда лучше сохранять (Android) следующие данные:

1. Настройки программы (Ini-файлы). В папку GetHomePath или GetPublicPath? Хотя это мне не совсем принципиально, но всё же куда рекомендуется?

2 (важнее) Куда хранить данные о In-app purchasing? Допустим, купил человек 10 единиц, потратил в игре 6 единиц, куда хранить файл с информацией о 4 оставшихся единицах? Если в папки GetHomePath, GetPublicPath и проч., то при удалении и повторном установлении приложении эта информация теряется.

А если в папку GetSharedDocumentsPath, то как бы засорение этой папки, что не есть гуд.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

1) сохранять нужно в TPath.GetDocumentsPath

2) Нужно будет снова запросить, явно там есть такая возможность

Ссылка на комментарий
  • 0
3 часа назад, Равиль Зарипов (ZuBy) сказал:

1) сохранять нужно в TPath.GetDocumentsPath

2) Нужно будет снова запросить, явно там есть такая возможность

2. У кого запросить? У гугла? А он откуда знает, сколько единиц (токенов) было уже израсходовано?

Ссылка на комментарий
  • 0
Цитата

1) сохранять нужно в TPath.GetDocumentsPath

Это спорный момент. При написании мултиплатформенной программы, в Windows -  GetDocumentsPath вернет  c:\Users\<username>\Documents\ . Пользователь может удалить оттуда данные случайно - т.к. это папка "Мои документы".

Лучше TPath.GetHomePath\имя программы - напр. для Adobe в Windows это c:\Users\<username>\AppData\Roaming\Adobe\

Для андроида GetHomePath и GetDocumentsPath вернут одинаковый путь. В MacOS, iOS и Windows - это разные пути.

Здесь  описание всех путей.

+ Для андроида 

GetDocumentsPath;       -  /data/data/com.myapp.app1/files
GetDownloadsPath;       -  /storage/emulated/0/Android/data/com.myapp.app1/files/Download
GetHomePath;            -  /data/data/com.myapp.app1/files
GetSharedDocumentsPath; -  /storage/emulated/0/Android/data/com.myapp.app1/files
GetLibraryPath;         -  /data/data/com.myapp.app1/files
GetPublicPath;          -  /storage/emulated/0/Android/data/com.myapp.app1/files
GetPicturesPath;        -  /storage/emulated/0/Android/data/com.myapp.app1/files/Pictures

Ну и кто еще не в курсе - сохранять удобней всего в TMemIniFile из юнита IniFiles. Реестра в Unix системах нет (а это MacOS, iOS и Android), там все на файлах.

Изменено пользователем ENRGY
Ссылка на комментарий
  • 0

Hi. SharedPreferences

uses
  Androidapi.Helpers,
  Androidapi.JNI.App,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.GraphicsContentViewText;

var
  SP: JSharedPreferences;
  SPE: JSharedPreferences_Editor;

procedure TMain.FormShow(Sender: TObject);
begin
  SP := TAndroidHelper.Activity.getSharedPreferences(StringToJString('ZTApp'), 0);
  IP.Text := JStringToString(SP.getString(StringToJString('IP'), StringToJString('127.0.0.1')));
end;

procedure TMain.SaveClick(Sender: TObject);
begin
  SPE := SP.edit;
  SPE.putString(StringToJString('IP'), StringToJString(IP.Text));
  SPE.commit;
end;

 

Ссылка на комментарий
  • 0
7 часов назад, ENRGY сказал:

 

Ну и кто еще не в курсе - сохранять удобней всего в TMemIniFile из юнита IniFiles. Реестра в Unix системах нет (а это MacOS, iOS и Android), там все на файлах.

TIniFile под Андроидом тоже прекрасно работает

Ссылка на комментарий
  • 0

Major

Под Android, iOS, MacOS - TIniFile это все тот же TMemIniFile:

{$IFDEF MSWINDOWS}
  { TIniFile - Encapsulates the Windows INI file interface (Get/SetPrivateProfileXXX functions) }

  TIniFile = class(TCustomIniFile)
  public
    [...]
  end;
{$ELSE}
  TIniFile = class(TMemIniFile)
  public
   [...]
  end;
{$ENDIF}
Изменено пользователем ENRGY
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...