【问题标题】:How can we know whether an app is installed through playstore or other market?我们如何知道某个应用是通过 Playstore 还是其他市场安装的?
【发布时间】:2015-10-31 20:59:10
【问题描述】:

我开发了一个安卓应用,希望大家从playstore下载。我想知道有没有什么方法可以检查我的安卓应用是从playstore还是其他市场安装的? 我认为通过检查可以使我的应用更安全。

【问题讨论】:

标签: android


【解决方案1】:

好吧,我不确定,但在分析了我使用 google play 安装的包后,我说你可以使用包管理器指挥官形式的 shell,并且会有本机实现。 所以我的分析是 installer=com.android.vending 的软件包是从 google play store 安装的

pm 列出包 -i

shell@Colors_X47:/ $ pm list packages -i 包:com.google.android.ears installer=null 包:com.android.defcontainer installer=null 包:com.android.quicksearchbox installer=null 包:com.android.smsregister installer=null 包:com.android.contacts installer=null 包:com.mediatek.voiceunlock installer=null 包:com.mediatek.lbs.em 安装程序=null 包:com.android.phone 安装程序=空包:com.android.calculator2 安装程序=空 包:net.cactii.flash2 安装程序=null 包:com.android.htmlviewer 安装程序=null 包:com.google.android.gsf.login 安装程序=null 包:com.azmathunzai.lebcms 安装程序=null 包:jackpal.androidterm installer=com.android.vending 包:com.android.wallpaperchooser 安装程序=null 包:com.google.android.tts installer=com.android.vending 包:com.android.providers.telephony 安装程序=null 包:com.mediatek.schpwronoff 安装程序=null 包:com.mediatek.CellConnService 安装程序=null

新发现: You can use String getInstallerPackageName (String packageName) Follow link

【讨论】:

    【解决方案2】:

    使用PackageManager 执行此操作:

    public void licenseChecker() {
        String mSource = getApplicationContext().getPackageManager()
                .getInstallerPackageName(getApplicationContext().getPackageName());
        if (mSource != null && mSource.startsWith("com.android.vending")) {
            // YOUR LOGIC HERE
            Log.d("*** Success Checker", "Play Store");
        } else {
            // YOUR LOGIC HERE
            Log.d("*** Failure Checker", "Other Market");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多