在2个Android应用程序之间共享数据

在2个Android应用程序之间共享数据,android,sharedpreferences,ipc,Android,Sharedpreferences,Ipc,我已经经历了很多类似的答案,但由于最近很多事情都发生了变化,我想再问一次 我有一个应用程序A,它将数据存储在共享首选项中。我希望应用程序B能够通过应用程序A访问存储在共享首选项中的数据 迄今为止的调查结果- 我们不能使用WORLD\u READABLE作为共享首选项,因为它已经 他被弃用了 我们无法使用sharedUserId共享数据,因为数据已被删除 不赞成 我还了解到,使用相同密钥签名的应用程序可以访问每个应用程序 其他人的代码和数据。但是我们可以通过这样做来访问数据吗? (或者我们需要在

我已经经历了很多类似的答案,但由于最近很多事情都发生了变化,我想再问一次

我有一个应用程序A,它将数据存储在共享首选项中。我希望应用程序B能够通过应用程序A访问存储在共享首选项中的数据

迄今为止的调查结果-

  • 我们不能使用WORLD\u READABLE作为共享首选项,因为它已经 他被弃用了
  • 我们无法使用sharedUserId共享数据,因为数据已被删除 不赞成
  • 我还了解到,使用相同密钥签名的应用程序可以访问每个应用程序 其他人的代码和数据。但是我们可以通过这样做来访问数据吗? (或者我们需要在签字的同时做些别的事情吗 过程?)。如果是,如何进行
解决方案之一是使用内容提供者(数据源是共享的首选项)共享数据。 是否还有其他方式共享数据

我还了解到,使用相同密钥签名的应用程序可以访问彼此的代码和数据

仅通过
sharedUserId

是否还有其他方式共享数据

你可以:

  • 让一个应用程序公开另一个应用程序启动的服务,并通过
    Intent
    extras传递数据
  • 让一个应用公开另一个应用绑定的服务,并通过AIDL参数传递数据
  • 让一个应用程序向另一个应用程序发送显式广播
    Intent
    ,数据包含在
    Intent
    extras中
  • 让一个应用程序使用
    Intent
    extras中包含的数据在另一个应用程序中启动活动
ContentProvider
解决方案一样,这些选项可以通过Android的权限系统进行保护。如果您小心地设置了自定义权限,并使用
protectionLevel
signature
,这些应用程序将能够相互通信,但其他应用程序将无法侵入这些通信通道


当然,另一种选择是只使用一个应用程序。

谢谢您的回答。在上面提到的所有4种解决方案中,流程从想要共享数据的应用程序开始,如果我错了,请纠正我。我的用例是访问其他应用程序已经存储的数据,内容提供商允许我这样做。我的用例基本上是一个SSO实现,用于访问令牌和其他详细信息。@KashishMalhotra如果它用于帐户数据,您考虑过AccountManager吗@KashishMalhotra:“在上面提到的所有4种解决方案中,流程从想要共享数据的应用程序开始,如果我错了,请纠正我”——第二种(绑定到服务)更像是一种“拉”机制,而不是“推”,这似乎是您想要的。@Gabeschen谢谢您的建议,我已经看过了。我们已经有了一个实时应用程序,我们想让另一个应用程序实时运行并使用SSO。由于大多数用户将已经登录到第一个应用程序,我们将无法使用第一个应用程序创建自定义帐户,对吗?此外,我想知道像Amazon这样的公司如何使用其应用程序实现SSO,我在任何地方都找不到它。他们没有列出自定义帐户,所以我最好的猜测是这些应用程序在他们之间共享数据。CMIIW。如果有人能给我指一些相关的资源,那就太好了。