我需要检测我的应用程序是从 google play 或其他市场安装的,我如何获得这些信息?
问问题
34235 次
4 回答
59
该类PackageManager
提供getInstallerPackageName方法,该方法将告诉您安装您指定的包的包名。侧面加载的应用程序将不包含值。
编辑:请注意下面关于亚马逊应用商店的@mttmllns回答。
于 2012-05-30T03:03:27.260 回答
27
仅供参考,亚马逊商店的最新版本最终也将PackageManager.getInstallerPackageName()
与"com.amazon.venezia"
Google Play 的"com.android.vending"
.
于 2013-05-31T17:43:18.417 回答
19
我使用此代码检查构建是从商店下载还是侧载:
public static boolean isStoreVersion(Context context) {
boolean result = false;
try {
String installer = context.getPackageManager()
.getInstallerPackageName(context.getPackageName());
result = !TextUtils.isEmpty(installer);
} catch (Throwable e) {
}
return result;
}
科特林:
fun isStoreVersion(context: Context) =
try {
context.packageManager
.getInstallerPackageName(context.packageName)
.isNotEmpty()
} catch (e: Throwable) {
false
}
于 2014-07-23T09:15:31.770 回答
8
如果您正在寻找识别和限制侧载应用程序。谷歌已经提出了解决问题的解决方案。
您可以按照以下方式进行操作
项目build.gradle
:
buildscript {
dependencies {
classpath 'com.android.tools.build:bundletool:0.9.0'
}
}
应用模块build.gradle
:
implementation 'com.google.android.play:core:1.6.1'
扩展应用程序的类:
public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return;
}
super.onCreate();
.....
}
通过这种集成,谷歌将自动识别是否缺少任何拆分 apk,并显示一个弹出窗口“安装失败”,它还会重定向到 Play 商店下载屏幕,用户可以通过 Google Play 商店正确安装该应用程序。
检查此链接以获取更多信息。
希望这可以帮助。
于 2019-06-25T05:17:25.970 回答