我需要检测我的应用程序是安装从谷歌播放或其他市场,我如何才能得到这些信息?
PackageManager类提供了 GetInstallerPackageName方法,该方法将告诉您安装了您指定的包的包名。侧面加载的应用程序将不包含值。
PackageManager
编辑 : Note@mttmllns’回答如下关于亚马逊应用程序商店。
顺便说一句,亚马逊商店的最新版本 很明显最终将 PackageManager.getInstallerPackageName()设置为 "com.amazon.venezia",以便与 Google Play 的 "com.android.vending"进行对比。
PackageManager.getInstallerPackageName()
"com.amazon.venezia"
"com.android.vending"
我使用这段代码来检查一个版本是从商店下载的还是侧载的:
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 }
更新 :
特写现在在 Android 10或更高版本上已经过时了。
缺少分割的安装现在被阻止在已经激活或运行安卓10的设备上。
在比 Android 10更低的版本上遵循这一点
如果你正在寻找并限制侧面载入的应用程序。谷歌已经想出了解决方案来识别这个问题。
您可以按照下面的步骤进行操作
项目的 build.gradle:
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(); .....
}
有了这个集成,谷歌将自动识别是否有任何缺失的分割应用程序,并显示一个弹出窗口说“ 安装失败”,它还重定向到播放商店下载屏幕,用户可以正确安装的应用程序通过谷歌播放商店。
查看这个 链接了解更多信息。
希望这个能帮上忙。