3

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

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

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

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

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

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

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

这个事情谁有经验?

4

1 回答 1

1

更改混淆器构造函数的参数不会做你想做的事。检查的包由 LicenseChecker 构造函数根据第一个参数确定。为 LicenseChecker 定义一个新的构造函数可能会起作用,该构造函数采用包 B 的包名称和版本代码。

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

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

于 2011-01-30T17:53:36.993 回答