boolean中的小帮助以获得外部应用程序的市场安装

时间:2017-05-19 12:35:01

标签: java android

所以我已经制作了一个已经锁定专业功能的应用程序,你必须在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();引用另一个包名呢?

1 个答案:

答案 0 :(得分:0)

这些是包管理器的预期返回值:

  • null - 开发人员
  • com.android.vending - google play
  • com.amazon.venezia - amazon app
  • com.sec.android.app.samsungapps - 三星应用商店

但正如@ nickthefreak所说,你应该调试它或打印installPM的值