我已经创建了一个android应用程序,还有一个可以在常规应用程序中打开一些功能的付费 key 应用程序。 我尝试使用此代码来检查是否安装了付费 key :
protected static boolean isProInstalled(Context context) {
PackageManager manager = context.getPackageManager();
if (manager.checkSignatures(context.getPackageName(), "com.myapps.appkey")
== PackageManager.SIGNATURE_MATCH) {
//Pro key installed, and signatures match
return true;
}
return false;
}
当我安装从 Eclipse 导出的两个 APK 时,它在我的手机上运行(我想我导出了它们。也许是直接使用“运行”/“调试”。我不记得了)。但是当我将它们上传到 Google Play 时 - 我收到一位用户的消息,说他购买了 key ,但功能仍然被阻止。 我做错了什么吗?那些签名到底是什么?当我导出 APK 时,它是否与别名和 keystore 有任何关系?
最佳答案
调试 key 是从 IDE 运行时使用的默认 key ,因此在测试时,它们都使用相同的 key 。但是您使用商店的不同 key 对它们进行了签名,因此签名将不匹配。
正如@NobuGames 在评论中提到的那样,此时您已经发布了这两个应用程序,您可以更新免费应用程序以使用硬编码字符串检查付费应用程序的 key 哈希。从理论上讲,这可能会使某人更容易制作您的应用程序的高级解锁盗版版本,尽管如果他们深入研究您的源代码,我怀疑他们无论如何都会成功。认为这是一个很好的问题(流行的应用程序足以让盗版者花那么多时间来破解你的应用程序)。
关于android - 检查是否安装了付费应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29613303/