【问题标题】:Sharing small amount of data between apps在应用程序之间共享少量数据
【发布时间】:2013-10-08 04:49:53
【问题描述】:

我有几个应用程序实现了一些登录逻辑。如果假设一个应用程序记录到 some_account@gmail.com,我希望所有这些应用程序都记录到 some_account@gmail.com。如果我注销,我希望所有应用程序都这样做。但我不想立即做同样的事情。应用程序本身可以处理它,但它需要知道是否有其他应用程序已经登录,如果是,只需登录与该应用程序相同的电子邮件地址。所以我需要知道记录其他应用程序的电子邮件地址是什么。我需要存储一个字符串。

首先我在考虑SharedPreferences,但这是一个相当糟糕的主意,因为还有其他选项(并且stackoverflow 充满了进程之间使用SharedPreferences 的坏例子)。尽管如此,我还是尝试了这个。在所有应用程序上设置sharedUserId,称为createPackageContext,并最终尝试获取首选项。但我无法从中读取。即使我使用了Context.Mode_WORLD_READABLE,我总是得到空值——顺便说一句,它已被弃用。

好的,吸取的教训不要为此使用SharedPreferences(我想)。但我现在需要的只是将单个字符串存储在其他应用程序可以读取的位置。

也许我应该使用ContentProvider?但说真的……为了一根弦? 另一种选择是什么?我敢肯定,对于这么简单的操作,我真的不需要ServiceContentProvider,但我实际上不知道该怎么做。

【问题讨论】:

  • +1 非常好的问题。你已经很好地解释了你想做什么。您还展示了您在尝试找到自己的解决方案时考虑了哪些选项。
  • 除了共享文件(yeuch、易碎、不安全)或 ContentProvider 之外,我不知道有什么好的方法可以做到这一点。 SharedPreferences 已将共享从共享中删除,这很糟糕,但也许有一天......

标签: android


【解决方案1】:

您可以使用广播接收器。您所要做的就是在应用程序 A 中的数据发生变化时向应用程序 B 发送广播。然后应用程序 B 可以在后台处理数据,并根据需要存储它。这可能有点过度杀戮,并且可能有更好的方法来做到这一点,但它会起作用。

【讨论】:

  • 但我不确定是否所有应用程序都在运行。广播不会传送到用户从设置中关闭或停止的应用程序。
猜你喜欢
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多