android - 如何在运行时确定应用程序是通过 amazon appstore 还是 Google play 安装的

标签 android package apk package-managers

在运行时确定应用程序是通过 Amazon Android Appstore 还是 Google play 安装的推荐最佳做法是什么?我想避免为提供我的应用的每个应用商店生成单独的 APK。

我的首选方法是使用 PackageManger.getInstallerPackageName。

根据 Android API 文档,这正是我要找的: 检索安装包的应用程序的包名称。这表明包裹来自哪个市场。

不幸的是,通过 Amazon Appstore(包括 KF)安装的应用似乎返回 null,这是只有当用户手动安装 APK 时才会出现的情况。

有人可以让我知道是否有其他方法可以做到这一点。

最佳答案

除了返回 null 的问题外,getInstallerPackageName() 可能会被篡改并返回不准确的信息。

我已经研究了很长时间,我能想到的最好的解决方案是拥有一个包含该信息的常量文件:

public class Constants {

    public static final int GOOGLE_PLAY = 0;
    public static final int AMAZON = 1;
    public static final int BUILT_FOR = GOOGLE_PLAY;
}

只需在此文件中使用 AMAZON 而不是 GOOGLE_PLAY 并为每个应用商店构建一次 apk。

您可以在代码的其他地方使用以下方法检查:

if(Constants.BUILT_FOR == Constants.GOOGLE_PLAY) {
    //Google Play build
}

if(Constants.BUILT_FOR == Constants.AMAZON) {
    //Amazon Build
}

关于android - 如何在运行时确定应用程序是通过 amazon appstore 还是 Google play 安装的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413912/

相关文章:

android - 在 manifest.xml 中声明的 BroadcatReceiver 未接收到 LocalBroadcastManager Intent

python - 使方法在包中的更高级别可用

android - 如何为我的 Android 应用程序创建 "Licensing add-on"?

android - 您上传了一个可调试的 APK。出于安全原因,您需要先禁用调试,然后才能将其发布到 Google Play-Upload apk to google play

java - textView如何显示文本

java - extra\in json 响应之前/在 java、android 中

python - 为什么这两个 Python 导入的工作方式不同?

android - 亚行错误: device not found while device is connected

android - 更新 Android Studio 后似乎无法修复此错误