3

我已经用谷歌搜索了足够多的东西,但找不到这个案例。我想编写一个仅对特定应用程序共享/可访问的自定义内容提供程序。

我有这种情况:

  • 在 Google Play 上有多个应用。说 A、B 和 C。
  • 想写一个内容提供者,比如说 Z 只能由 A、B 和 C 访问。我正在考虑将内容提供者“Z”作为自己的 apk 发布。
  • 当 Z 安装在设备上时;A、B、C 可以访问 Z。如果 Z 没有安装,那么第一个应用程序会直接到 Google Play 安装 Z。

现在我的问题是:

是否有可能编写这样的内容提供者,它只在特定的应用程序之间共享?android:exported="false" 使其无法被任何其他外部应用程序访问。当 android:exported 设置为 false 时,android:grantUriPermissions="true" 不起作用,并且将 android:exported 设置为 true 使其可公开访问。

如果它们似乎更适合我在多个应用程序之间共享信息的要求,请随时分享其他解决方案。

4

1 回答 1

1

当 android:exported 设置为 false 时,android:grantUriPermissions="true" 不起作用

是的,它确实。

但是,android:grantUriPermissions可能与您的用例无关,尤其是当 Z 是其自己的独立应用程序时。Z 必须是使用Intent带有FLAG_GRANT*标志的 A/B/C 调用 A/B/C 的人,我猜这不符合您的计划。

如果,正如我怀疑的那样,A/B/C 需要独立于 Z 访问 Z 告诉他们它可以被访问并授予Uri-specific 权限,标准方法是使用自定义signature-level <permission>。然后,您将保护导出提供程序并使用android:permission. <provider>理论上,只有您的应用程序套件才能拥有该权限,因为只有您的应用程序套件将由该签名密钥签名,因此具有签名匹配。

(我说“理论上”是因为这种方法存在问题

于 2014-06-27T17:11:08.397 回答