如何知道一个应用程序是从谷歌播放或侧装?

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

PackageManager类提供getInstallerPackageName方法,该方法将告诉你指定的软件包的安装包名称。 侧装应用程序不会包含值。

编辑 :注意@mttmllns关于亚马逊app store的答案如下 。

FYI 显然最新版本的亚马逊商店最终将PackageManager.getInstallerPackageName()"com.amazon.venezia" ,以便与Google Play的"com.android.vending"进行对比。

我使用这个代码来检查,如果一个构build是从商店下载或sideloaded:

 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; }