首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享内容提供者

共享内容提供者
EN

Stack Overflow用户
提问于 2013-03-06 17:38:37
回答 3查看 2.4K关注 0票数 9

我的应用程序有两个版本,一个免费的和专业的版本,应用程序数据的内容提供者需要在两者之间共享。

它的设计应牢记以下几点

  • 任何版本所创建的数据都应立即在其他版本中可见。
  • 据我所知,专业版和免费版都不能声明same content provider in the manifest file
  • 记住最后一点,我需要为免费版本和pro版本创建单独的提供者。

可能的解决办法:

  • 创建两个内容提供者,一个由免费版本创建,另一个由专业版本创建。
  • 当支持版本首次启动时,如果在免费版本中有任何数据,请将其复制到支持版本中。
  • 每当任何数据以免费或专业版本编写时,我都应该检查其他版本的内容提供程序是否存在,如果存在,则写入这两个内容提供程序。
  • 将android:保护主义级别属性设置为“签名”,以便两个版本都可以访问两个内容提供程序

请让我知道这是否有意义,并遵循与共享内容提供商的最佳做法。一定要分享其他的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-07 12:11:15

所以我最后做的是:

  • 为每个版本的创建了两个独立的内容提供者(每个版本都具有不同的权限),并声明了它们的惟一性。
  • 将其"android:exported"设置为“真”,以便在应用程序之间共享内容提供者数据
  • 为每个内容提供程序(具有read+write访问权限)定义了自定义权限,以限制对数据的访问。
  • 对于每个权限定义,我将"android:protectionLevel"属性定义为“签名”,以便应用程序能够隐式和安全地相互通信。
  • 在任何给定的版本中,都会显式地请求访问另一个版本的中的内容提供程序,使用的是用户权限android:name="MY_CUSTOM_PERMISSION元素“。

结果:

  • 这两个版本现在都可以安全地和隐式地访问彼此的内容提供程序。
  • 当付费版本启动时,它会悄悄地将所有数据从免费版本复制到付费版本,以便为无缝使用做准备。
票数 4
EN

Stack Overflow用户

发布于 2013-03-07 06:39:15

我有3个应用程序在市场上,每个有一个免费和付费版本。对于给定的应用程序,我在一个Android共享库项目中有100%的代码,这个项目是从免费和付费项目中引用的。这些免费付费的安卓项目只是虚拟项目,只对其AndroidManifest.xml有用。

如果希望启用/禁用某些功能,则始终可以根据包名在共享库中添加相关的检查。

在代码中(在共享库中),可以根据调用包区分免费或付费功能和启用/禁用功能。

代码语言:javascript
复制
if ("com.example.paid".equals(context.getPackageName()) {
    //enable pro version features
}

你就不能做点类似的事吗?这将为您节省大量维护开销。

票数 4
EN

Stack Overflow用户

发布于 2013-03-07 00:30:31

只是我的想法。

是否真的需要在设备中同时安装免费版本和付费版本?如果不是,当用户首次启动付费版本时,您可以简单地提供一个从免费到付费的副本功能。然后用户可以删除免费版本,并使用付费版本独占。

这个方法很好。但我看到了一个问题。

当内容提供者随着时间的推移而改变时会发生什么?假设您决定使用更多的字段来增强内容提供者。然后,用户应该升级这两个版本,以便正确地编写数据。

随着时间的推移,两个内容提供商会保持不变吗?如果您决定付费版本将有更多的功能,因此更多的数据被捕获。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15254211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档