我有两个Android应用程序,一个用Java编写,另一个用javascript编写,包含在phonegap应用程序中。我需要我的java应用程序来设置用户首选项(字符串)和js应用程序来获取此字符串。
在我的java应用程序中设置用户首选项后,我现在需要知道如何在我的js应用程序中检索它。怎么样?我尝试过两个手机插件,(https://github.com/macdonst/AppPreferences和https://github.com/apla/me.apla.cordova.app-preferences)
但是,它们似乎不是为了从其他应用程序获取用户首选项而构建的。
我还应该尝试什么?我应该坚持用户偏好吗?
谢谢,
答案 0 :(得分:6)
Preferences
在应用程序上下文中使用和组织。这意味着一个应用程序的首选项不属于其他应用程序。我建议有一些选择。
如果一个应用程序使用MODE_WORLD_WRITEABLE
模式定义首选项,则当且仅当包名称已知时,其他应用程序才能达到该首选项。如果未使用MODE_WORLD_WRITEABLE
模式定义首选项,则其他应用程序将不会读取首选项。 MODE_WORLD_WRITEABLE
是Android中定义新偏好时Preferences
中的模式之一。有一个previous主题可以解答如何阅读其他应用程序的首选项。但是,在API级别17中不推荐使用MODE_WORLD_WRITEABLE
模式。如果您的应用程序的目标是API级别17及以上,则不应该坚持使用Preferences
。
另一方面,两个应用程序可以在移动设备上共享同一个数据库。您只需创建一个包含两个应用程序共享和读取的首选项的表。此选项的另一个link描述了如何处理此类操作。
其他方式,您可以利用Java
中的对象序列化。我的意思是,您可以编写一个由应用程序定义的配置或首选项组成的类。该类应该实现Serializable
接口。如果需要,可以将该类写在文件上或其他应用程序可以访问的某个位置。但是,由于一致性,此选项不安全。文件可能已损坏,删除等等。
正如@BenSmith所提到的,您可以将首选项存储在两个应用程序都可以访问的远程位置。
答案 1 :(得分:1)
一种可能的选择是写出包含设置的文件,并使用其他应用程序读取设置。 我不是100%确定应用程序可以创建文件,但它可能值得研究。
当然这可能需要用户干预(EG选择保存文件的位置),因此这可能不适合您。
如果做不到这些,应用程序大部分是沙盒式的(正如@BenSmith所建议的那样)远程位置将是您最好的选择。