私有内容提供商仅在我的应用中共享

时间:2014-06-27 17:03:50

标签: android android-contentprovider android-sharing

我已经足够搜索了,但找不到这种情况。我想编写一个只为特定应用程序共享/访问的自定义内容提供程序。

我有这种情况:

  • 在Google Play上拥有多个应用。说A,B和C.
  • 想要写一个内容提供商,比如只能由A,B和C访问的Z.我正在考虑将Content Provider'Z'发布为自己的apk。
  • 当Z安装在设备上时; A,B和C可以访问Z.如果未安装Z,则第一个应用程序将指向Google Play安装Z.

现在我的问题是:

是否有可能完全编写此类内容提供程序,仅在特定应用程序之间共享? android:exported =“false”使任何其他外部应用程序无法访问它。 android:grantUriPermissions =“true”在android:exported设置为false时不起作用,将android:exports设置为true使其可以公开访问。

如果它们看起来更符合我在多个应用之间共享信息的要求,请随时分享其他解决方案。

1 个答案:

答案 0 :(得分:1)

  当android:exported设置为false时,

android:grantUriPermissions =“true”不起作用

是的,确实如此。

但是,android:grantUriPermissions可能与您的用例无关,特别是如果Z是其自己的独立应用程序。 Z必须是使用带有Intent标志的FLAG_GRANT*进入A / B / C的人,我猜这不适合您的计划。

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

(我说“理论上”因为有issues with this approach