【发布时间】:2015-10-31 20:59:10
【问题描述】:
我开发了一个安卓应用,希望大家从playstore下载。我想知道有没有什么方法可以检查我的安卓应用是从playstore还是其他市场安装的? 我认为通过检查可以使我的应用更安全。
【问题讨论】:
-
Is there a way to detect if app was installed with Market or not? 我想这可能就是您正在寻找的答案。
标签: android
我开发了一个安卓应用,希望大家从playstore下载。我想知道有没有什么方法可以检查我的安卓应用是从playstore还是其他市场安装的? 我认为通过检查可以使我的应用更安全。
【问题讨论】:
标签: android
好吧,我不确定,但在分析了我使用 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
【讨论】:
使用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");
}
【讨论】: