我如何在我的高级密钥应用程序中使用Android LVL?

时间:2011-02-06 06:41:34

标签: android

实现付费“高级密钥”应用程序的普遍接受的方法似乎是免费应用程序检查是否安装了付费应用程序来解锁功能。 这部分是直截了当的LVL的实现,但我无法弄清楚如何将两者结合起来。 如果从未打算运行付费应用程序,则无法调用许可证验证服务。 我能想到的唯一方法是让免费应用程序从付费应用程序调用一个意图并等待响应。付费应用可以进行许可证验证。这种方法的问题在于,当免费应用程序调用意图时,它会被暂停并且可以随时被操作系统杀死。因此,在许可证检查后,没有任何保证应用程序仍在运行。

有关如何实施仅作为解锁密钥但又实现LVL的付费应用的任何想法或建议?

谢谢

2 个答案:

答案 0 :(得分:1)

正如NickT建议的那样,我没有看到通过服务做到这一点的问题。

我看到的另一个选项可能就是“滥用”内容提供商。在验证许可证时,内容提供程序上的查询可能会阻止,因此您需要异步查询它,例如在主要活动中展示某种忙碌的微调器。

这两种方法似乎比通过意图产生另一种活动更容易(这是最初的方法,对吧?)。

答案 1 :(得分:0)

实现免费和增强版本的一种方法是将功能分成两个单独的apks。免费版本将被打包为许多正常活动,增强版本的功能将由一个单独的apk中的远程服务实现。

两者使用AIDL通过远程接口进行通信。启动时,免费应用程序会尝试绑定到服务,如果不能,则会超时。如果建立了连接,则将免费应用程序中的静态属性设置为true。免费应用程序在调用任何提供增强功能的例程之前测试此属性。

我已经完成了这个但是还没有在市场上发布它并且对LVS一无所知,但是不明白为什么服务apk无法执行此功能并实现诸如'licenceVerified( )'可以通过AIDL将结果返回到免费应用程序。在我的项目中,服务实际上做了很多其他计算,将信息返回给自由部分,所以即使免费部分被黑客攻击,那么除非服务apk实际存在,否则如果一个不存在的方法,免费应用程序将崩溃远程接口被调用。