所以我已经制作了一个已经锁定专业功能的应用程序,你必须在Play商店购买专业版密钥解锁器来解锁它们。此外,主要的免费应用程序不能在Play商店中使用。实际上,我已经制作了一个布尔值来检查PACKAGE_NAME
中说明的包名称的解锁器应用程序是否已从Play商店下载。
问题是这个布尔值总是返回false,所以如果我在Play商店购买了pro key unlocker apk,它总是会提示该应用程序不是正版。谁能告诉我为什么?
感谢。
这是布尔代码:
public boolean isValid() {
PackageManager pm = this.getPackageManager();
String installPM = pm.getInstallerPackageName(PACKAGE_NAME);
if ( installPM == null ) {
// Definitely not installed from Android Market
return false;
}
else if ( installPM.equals("com.google.android.feedback") ) {
// Installed from the Android Market
return true;
}
return false;
}
这是if语句检查器:
if(isPro()) {
if (!isValid()) {
Log.d(TAG, "This is an hack!");
isHacked();
}
}
编辑:正如评论中所述,对我来说,问题是PackageManager pm = this.getPackageManager();
引用了主要的免费应用程序(其中包含我使用此布尔值的活动)而不是外部应用程序解锁器当然有anothetr包名。因为免费应用程序在Play商店中不可用,它总是返回null ...但是如何让PackageManager pm = this.getPackageManager();
引用另一个包名呢?
答案 0 :(得分:0)
这些是包管理器的预期返回值:
但正如@ nickthefreak所说,你应该调试它或打印installPM
的值