从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字典对象)进行检索,并从那里读取单个键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |