我是否可以从应用程序A查询Android Market License服务器,以查看应用程序B是否是从市场合法购买的?

时间:2011-01-30 15:46:44

标签: android google-play android-preferences android-lvl

我有app A是免费的。我有应用程序B这是一个捐赠应用程序。我知道人们宁愿花4美元买咖啡,也可以通过其他渠道免费获得我的应用程序,但很好。

如果应用B合法且来自市场并付费,我想在应用A中启用更多功能。

所以我很好奇我是否只是更改了市场许可证代码中的软件包名称,以便检查应用程序B,即使应用程序A正在执行它。

例如,这一行来自lvl库代码:

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx,
new AESObfuscator(SALT, ctx.getPackageName(), deviceId)),
BASE64_PUBLIC_KEY);

我想用app B中的包名替换ctx.getPackageName(),这当然是我的应用程序,我知道。例如:

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx,
new AESObfuscator(SALT, com.something.app.b, deviceId)),
BASE64_PUBLIC_KEY);

有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:1)

更改obfuscator构造函数的参数不会做你想要的。检查的包由LicenseChecker构造函数从第一个参数确定。它可能会为LicenseChecker定义一个新的构造函数,它接受包B的包名和版本代码。

如果应用A还想检查自己的许可证,您还需要扩展ServerManagedPolicy,以便为应用A的首选项文件中的每个应用保留单独的缓存数据。

请注意,即使这样做,如果您更新市场中的应用B,它也会中断,因为您需要将特定版本代码连接到应用A中。