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

我是否可以从应用程序A查询Android Market许可证服务器,以查看应用程序B是否从市场上合法购买?,android,google-play,android-preferences,android-lvl,Android,Google Play,Android Preferences,Android Lvl,我有一个免费的应用程序A。我有应用程序B,这是一个捐赠应用程序。我知道人们宁愿花4美元买咖啡,然后通过其他渠道免费获得我的应用程序,但哦,好吧 我想在应用程序A中启用更多功能,如果应用程序B是合法的、来自市场且付费的 所以我很好奇,如果我只是更改市场许可证代码中的包名,以便检查应用程序B,即使应用程序A正在执行它 例如,此行来自lvl库代码: mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx, new AESObfusc

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

我想在应用程序A中启用更多功能,如果应用程序B是合法的、来自市场且付费的

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

例如,此行来自lvl库代码:

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx,
new AESObfuscator(SALT, ctx.getPackageName(), deviceId)),
BASE64_PUBLIC_KEY);
我想用app B中的包名替换ctx.getPackageName(),这当然是我的app,我知道。例如:

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

有人对此有经验吗?

将参数更改为模糊器构造函数并不能满足您的需要。被检查的包由LicenseChecker构造函数根据第一个参数确定。可以为LicenseChecker定义一个新的构造函数,该构造函数接受包B的包名和版本代码

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


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

您认为共享首选项是更好的方法吗?这可能是有意义的。应用程序A可以访问应用程序B的缓存验证数据并验证其是否为当前数据,使用的逻辑与默认策略使用的逻辑几乎相同。(如果应用程序B未经验证,应用程序A可以假设它不会验证,并且永远不会向许可证服务器进行查询。这不是100%正确,但可能足以满足您的特定目的。您可能需要修改B使用的许可证库,以便应用程序A可以解密结果。我认为默认加密无法共享。有道理…如果他们使用相同的证书签名,甚至可以访问B的mode_private,并且在不加密的情况下读取缓存结果。如果是实时的,加密与否应该不会有什么区别。或者?5个月后,我对此随机投了反对票…有人知道我不知道的事情吗?请随时发表评论并帮助我美国犹他州。