android - 从 Delphi 访问 Android 的 SharedPreferences 类

标签 android delphi delphi-xe5

我刚刚开始使用 Delphi XE5 进行 Android 开发,正在尝试构建一个需要能够保留一些输入信息(配置)的简单应用程序。

我发现,Android 类 SharedPreferences可能是执行此操作的最简单方法,但我不知道如何从 Delphi XE5 FMX Mobile 访问此类。

我尝试在帮助中搜索“SharedPreferences”,但没有返回任何结果。另一方面,搜索“共享首选项”给了我太多。

最佳答案

简而言之,将所需的 API 单元添加到 uses 子句中 - 您的案例中的关键单元是 AndroidApi.Jni.JavaTypesAndroidApi.Jni.App、和 AndroidApi.Jni.GraphicsContentViewText,以及用于一些粘合代码的 FMX.Helpers.Android - 并且可以像在 Java 中一样调用它。 Java 类作为带有初始 J 的接口(interface)类型公开;在实践中,Android API 大量使用嵌套类,由于 Delphi 不支持嵌套接口(interface)类型,因此这些成为 ParentClassName_ChildClassName:

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(''));

就是说,我最近推出了一个简单的 TCustomIniFile 后代,它包装了 SharedPreferences API - 请参阅此处了解信息:

http://delphihaven.wordpress.com/2013/09/12/a-few-xe5-related-bits/

在将 API 映射到 TCustomIniFile 时,我发现一个小问题是 SharedPreferences 键是强类型的,而且似乎没有办法找到提前找出给定键的类型(TCustomIniFile 中的键,相比之下,是弱类型的)。因此,为了阅读,我使用 getAll 方法将所有键和值检索为 Map/JMap(其他语言中的 Java 字典对象)单词)并从那里读取各个键。

关于android - 从 Delphi 访问 Android 的 SharedPreferences 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18799540/

相关文章:

mysql - 如何连接到MySQL服务器

delphi - Canvas.TransparentColor 和 Canvas.Draw 与不透明度的组合

c++ - 如何在 C++ Builder 中直观地设计组件?

java - Android 版本的 Microsoft Graph java Sdk 和 proguard 问题

android - Processing 可以处理多点触控吗?

android - 比较 ImageView 对象

delphi - 无法将类型 (Null) 的变体转换为类型 (OleStr)

德尔福ADO : Locate with dataset filter on bug

delphi - 在备忘录上打字时如何计算字符和行数

java - 获取所选项目在Android弹出菜单类中的位置