是否可以在运行时可靠地检测哪个商店安装了 Android 应用程序(Google Play 或 Amazon Market)?

2023-12-28

我需要知道哪个商店是应用程序的安装程序,以便我知道与哪个商店进行通信以实现应用程序内购买功能。

是确定的100% 可靠生成两个单独的二进制文件的方法?或者有没有一个100% 可靠基于代码的运行时方法?

Stackoverflow 上还有很多类似的问题。所有的答案都建议使用类似的方法getInstallerPackageName on the PackageManager班级。所有的评论或相互矛盾的答案都表明这不是一种可靠的方法,这表明可靠地检查哪个商店安装了给定应用程序的唯一方法是生成两个单独的二进制文件,每个二进制文件都有一个storeFlag设置,并将一个二进制文件上传到 Amazon,并将一个二进制文件上传到 Google Play。


两个二进制文件将是最可靠的方法,但检查 Build.MANUFACTURER 和 installerName 应该会让您非常接近(尽管假设您想要检查 Amazon AppStore,如果用户在其非 Kindle 上安装了旧版本的安装程序设备且未更新 installerName 可能会报告 null)

boolean isAmazonDevice = Build.MANUFACTURER.equalsIgnoreCase("amazon");

final Application application = getApplication();
String installerName = application.getPackageManager().getInstallerPackageName(application.getPackageName());
boolean fromAmazonStore = installerName != null && installerName.equalsIgnoreCase("com.amazon.venezia");

然后检查以下值:

isAmazonDevice || fromAmazonStore

应该可以满足您大部分时间所需的需求。

一种可能会造成混乱的情况是,如果您正在侧面加载您的 apk 进行测试 - 在这种情况下,它不会有正确的 InstallerPackageName。您可以使用以下方法通过旁加载 apk 来伪造这一点:

adb install -i com.amazon.venezia APK_NAME
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在运行时可靠地检测哪个商店安装了 Android 应用程序(Google Play 或 Amazon Market)? 的相关文章

随机推荐

  • WAMP 上的 Mysqli,错误 - 连接尝试失败

    添加信息 我尝试了全新安装的 codeigniter 只需添加 this gt load gt database 默认控制器会触发相同的错误 我检查了 phpinfo 并且 mysqli 已安装 我用下面的代码检查了它并且它正在工作 当我打
  • 复制文件,保留权限和所有者

    Shutil 的文档告诉我 即使是更高级别的文件复制函数 shutil copy shutil copy2 也无法复制所有文件元数据 在 POSIX 平台上 这意味着文件所有者和组以及 ACL 都会丢失 如果我需要在python中复制文件
  • 检查视图是否自午夜以来已加载

    我有一个 ViewController 它对数组执行随机洗牌并将文本吐出到标签 在viewDidLoad方法 问题是 每当我导航到同一个 ViewController 时 它都会再次执行随机播放 而我每天只需要它随机播放一次 因此 我需要检
  • 从 iOS 应用内购买收据中检索订单 ID/文档编号

    目前 我们的系统的工作方式是 当用户购买应用内订阅时 购买的收据数据会发送到服务器 验证后我们将相应地更改用户的权利 有时 由于各种原因 我们可能会遇到这样的问题 用户可能没有获得应有的权利 在这种情况下 他们会通过电子邮件向我们发送从 A
  • 在 GSON 中使用泛型

    我正在使用 GSON 将 JSON 解码为 T 类型的对象 例如 public T decode String json Gson gson new Gson return gson fromJson json new TypeToken
  • 禁用 XAML 预览

    在 Visual Studio 2008 中 当我从项目中打开 XAML 文件时 它会显示水平分割 预览位于顶部 XAML 位于底部 大多数时候 我们的 XAML 不会在预览中呈现 因此我只需等待它尝试呈现 然后关闭预览 有没有办法让它默认
  • 如何安装我自己的扩展? VS代码

    我使用 Yeoman Generator 制作了自己的扩展包 但我不知道如何将其安装在我的 vscode 上 也许如果我将扩展包导出到市场 这是可能的 但我不想这样做 You can 将扩展打包到 vsix 文件中 https code v
  • bash——在运行之间存储变量的更好方法?

    我制作了一个 bash 脚本 我使用 crontab 每小时运行一次 并且我需要存储一个变量 以便下次运行它时可以访问它 该脚本每次运行时都会更改变量 因此我无法对其进行硬编码 现在我将其写入 txt 文件 然后读回 还有比这更好的方法吗
  • 在数据库的未知表中查找特定列?

    我试图在包含 125 个表的数据库中找到未知的特定列 我正在寻找一个通配符 例如 watcher 这可能吗 SELECT TABLE NAME COLUMN NAME DATA TYPE IS NULLABLE COLUMN DEFAULT
  • Java/HTML 编码问题(破折号变成 -)

    情况 我正在尝试修复一些使用 Java 后端通过 Velocity Mail Manager 发送自动电子邮件的代码 问题 主题在Java代码中设置如下String subject Hello what s next 然后将其设置为消息对象
  • 重复将数据从 Windows 服务传输到控制台应用程序

    这是我的场景 我有一个 Windows 服务 每 20 分钟运行一次任务 任务是 从远程网站托管的 API 请求更新 响应是 JSON 对象列表 当服务收到该列表时 它会执行一组操作 然后附加更多 JSON 对象 最后服务必须将该列表推送到
  • x86 上两个 128 位整数的高效乘法/除法(无 64 位)

    编译器 明威 海湾合作委员会 Issues 不允许使用 GPL LGPL 代码 GMP 或任何 bignum 库对于这个问题来说都太过分了 因为我已经实现了该类 我已经构建了自己的128 bit固定大小的大整数类 旨在用于游戏引擎 但可以推
  • SCRIPT70:添加选项以从最近关闭的 iframe 中选择元素时权限被拒绝

    我们在从 iframe 向选择元素添加选项时遇到问题 该代码在 Chrome Firefox 和 Opera 中运行良好 但在 IE11 中 当尝试从父窗口访问最近创建的选项时 我们会收到 SCRIPT70 权限被拒绝 我们需要的是将选项添
  • 如何使 Xamarin.Forms.Editor 可滚动/自动调整大小?

    我有一个可滚动布局 里面有一个编辑器 我想使其可滚动或自动调整大小以适应内容 我找不到怎么做 我尝试了自定义渲染器 但找不到如何将 InputMethods 设置为控件 有任何想法吗 在这篇文章的帮助下 https forums xamar
  • Java 和 C# 中易失性语义背后的原因是什么

    C 和 Java 都定义了这一点 易失性读取具有获取语义 易失性写入具有释放语义 我的问题是 这是定义 volatile 的唯一正确方法吗 If not will things be awfully different if the sem
  • 有人可以解释一下如何在 C 编程中将元素附加到数组吗?

    如果我想将一个数字附加到初始化为 int 的数组中 我该怎么做 int arr 10 0 5 3 64 arr 5 Is this it it s not working for me 我最后想要 0 5 3 64 5 我习惯了 Pytho
  • 仅获取单词后接下来的 6 个字符

    我有这个字符串 string foo bar php haystack needle 我想得到接下来的 6 个字符php 所以我会得到 haysta 我怎样才能做到这一点 问候 你只需要找到位置 php 然后添加做一个substr 在该位置
  • CSS 变换并调整元素大小

    我找到了这个 变换后的宽度 高度 https stackoverflow com questions 7565542 width height after transform 和其他几个 但没有什么不是我正在寻找的 我想要的是将某些内容缩放
  • Rails3 ActionView 模板处理程序在生产服务器上不起作用

    我正在使用 Rails 3 2 3 Ruby 1 9 3p125 jbuilder 0 4 0 In my view mycontroller文件夹我有一个show json jbuilder文件 当我在本地机器上测试所有内容时rails
  • 是否可以在运行时可靠地检测哪个商店安装了 Android 应用程序(Google Play 或 Amazon Market)?

    我需要知道哪个商店是应用程序的安装程序 以便我知道与哪个商店进行通信以实现应用程序内购买功能 是确定的100 可靠生成两个单独的二进制文件的方法 或者有没有一个100 可靠基于代码的运行时方法 Stackoverflow 上还有很多类似的问