如何知道从谷歌播放或侧载加载应用程序?

时间:2012-05-30 02:58:00

标签: android google-play sideloading

我需要检测我的应用是从谷歌播放或其他市场安装的,我怎么能得到这些信息?

4 个答案:

答案 0 :(得分:50)

PackageManager类提供getInstallerPackageName方法,该方法将告诉您安装指定包的任何内容的包名。侧载应用程序不包含值。

编辑:请注意关于亚马逊应用商店的@mttmllns'answer below

答案 1 :(得分:24)

FYI apparently亚马逊商店的最新版本最终将PackageManager.getInstallerPackageName()设置为"com.amazon.venezia",并与Google Play的"com.android.vending"形成鲜明对比。

答案 2 :(得分: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;
}

答案 3 :(得分:1)

如果您要确定并限制侧面加载的应用。 Google已提出解决方案以识别问题。

您可以按照以下步骤操作

项目的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();
.....

}

通过这种集成,Google将自动识别是否缺少任何拆分的APK,并显示一个弹出窗口,提示“ 安装失败”,并且还会重定向到Play商店下载屏幕,用户可以在其中正确安装该应用通过Google Play商店。

选中此link以获取更多信息。

希望这会有所帮助。