加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

从Delphi访问Android的SharedPreferences类

发布时间:2020-12-15 09:43:11 所属栏目:大数据 来源:网络整理
导读:我刚刚开始使用Delphi XE5的 Android开发路径,并且我正在尝试构建一个简单的应用程序,它需要能够持久保存一些输入的信息(配置). 我已经发现,Android类SharedPreferences可能是最简单的方法,但我无法弄清楚如何从Delphi XE5 FMX Mobile访问这个类. 我试过在帮
我刚刚开始使用Delphi XE5的 Android开发路径,并且我正在尝试构建一个简单的应用程序,它需要能够持久保存一些输入的信息(配置).

我已经发现,Android类SharedPreferences可能是最简单的方法,但我无法弄清楚如何从Delphi XE5 FMX Mobile访问这个类.

我试过在帮助中搜索“SharedPreferences”,但它什么也没有返回.另一方面,搜索“共享偏好”给了我太多.

解决方法

简而言之,将所需的API单元添加到uses子句中 – 在您的情况下,关键的是AndroidApi.Jni.JavaTypes,AndroidApi.Jni.App和AndroidApi.Jni.GraphicsContentViewText,以及FMX.Helpers.Android.代码 – 并且在Java中调用它就像你可能一样. Java类作为具有初始J的接口类型公开;在实践中,Android API使用嵌套类非常多,而且由于Delphi不支持嵌套接口类型,因此它们成为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字典对象)进行检索,并从那里读取单个键.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读