java - 如何知道某个应用程序是否已从 Google Play 或 Amazon 下载?

标签 java android google-play amazon-appstore

有什么方法可以知道应用程序是从 Amazon App Store 还是 Google Play Store 下载的?当然,我指的是应用本身。

我已将应用程序部署到这两个站点,我更想知道客户是从应用程序中的何处下载它的。我知道,我可以为每个服务部署不同的应用程序,但这会增加一些维护工作,如果有某种方法可以通过使用相同包的应用程序中的条件来解决它,则可以避免这些工作。

最佳答案

在代码中:

final PackageManager packageManager = getPackageManager();

try {
    final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0);
    if ("com.android.vending".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
        // App was installed by Play Store
    }
} catch (final NameNotFoundException e) {
    e.printStackTrace();
}

“com.android.vending”告诉您它来自 Google Play 商店。我不确定 Amazon Appstore 是什么,但使用上面的代码应该很容易测试。

通过亚行:

adb shell pm dump "PACKAGE_NAME" | grep "vending"

示例:

adb shell pm dump "com.android.chrome" | grep "vending"

installerPackageName=com.android.vending

关于java - 如何知道某个应用程序是否已从 Google Play 或 Amazon 下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072079/

相关文章:

android - 创建一个包含 intents 的 android 库

java - 如何将自定义布局设置为菜单项?

Android Play 商店 - 从服务器检索信息时出错。远程过程调用 :S-2:AEC-2

java - http状态码404 spring mvc

java - 为什么推土机将空源对象传递给我的可配置自定义转换器?

android - 如何检测用户何时到达 Google map 中的目的地?我正在通过我的应用程序的 Intent 启动 Google map

google-play - 如何在 App Store URL 中跟踪 UTM 标签

android - 是否可以区分(在代码中)apk 是通过播放还是手动安装的?

java - 使用 springdoc-openapi 和 spring-boot-starter-data-mongodb 生成 OpenAPI 文档

java - 在 Servlet 中提交表单而不刷新页面