如何购买应用以启用其他应用的付费功能?

时间:2016-01-13 21:04:57

标签: android android-intent in-app-purchase google-play intentfilter

有些应用(例如https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher)是免费的,但可以通过购买其他应用来启用付费功能(在这种情况下,这个应用https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher.prime

这是如何运作的?

我的猜测是免费应用程序启动一个显式的Intent,并可以通过try / catch结构检测应用程序是否存在。这样做的缺点是,创建具有相同包名称的应用程序并指定所有可能的Intent过滤器的人可以轻松地进行此操作。

它是如何工作的,还是以其他方式?

2 个答案:

答案 0 :(得分:2)

有各种方法可以做到这一点。一种方法是查询将受特殊权限保护的内容提供商。

我很久以前在Github上发布了一个帮助这样做的库:Android Unlocker Library

如果您正在处理Google生态系统之外的设备,这是一个不错的选择,但是,根据开发人员的经验,应用内购买可以提供更好的用户体验(从而带来更多销售)。

答案 1 :(得分:0)

最简单的方法是使用应用A中的startActivityForResult(...)对应用应用B的活动,必须使用IntentFilter进行配置才能从外部应用使用。在B调用活动中,您还可以使用getCallingActivity()检查谁在呼叫。您可以找到示例here

在启动Activity之前,您可以测试B已安装(使用PackageManager),或者您可以启动活动并捕获异常。

在调用的Activity中,您可以使用the PackageManager.checkSignature(String,String)方法检查调用包的签名。传递A和B的包名称,如果签名匹配,则执行逻辑。