检测应用程序是否已预先安装在设备上

时间:2018-10-22 11:17:01

标签: android google-play

我的应用程序将被预安装在供应商的设备上(例如,沃达丰/ T-Mobile / ATT将出售预安装了我的应用程序的电话)。这款预装的应用非常轻巧-仅带有“更新”按钮的登录页面,可重定向到Google Play。

我想跟踪有多少用户来自此预安装的应用程序(其中有多少人注册,购买了订阅等)。

场景1:

  • 用户首次启动电话
  • 用户打开预安装的应用
  • 我可以将用户打开的应用保存在共享的首选项中,并以真实的更新版本进行阅读

方案2:

  • 用户首次启动电话
  • 预装的应用正在通过Play商店在后台更新
  • 我没有收到任何广播(例如BOOT_COMPLETED),因为该应用从未打开过
  • 用户打开更新的版本->我不知道他是否来自预安装的应用程序

我的问题是如何解决方案2?

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,但是没有找到适合我需求的解决方案(除了发布OEM版本后几个月不更新商店版本)。如果应用未打开,您将无法保存任何内容,但也许您可以尝试读取安装日期:

long installed = context
.getPackageManager()
.getPackageInfo(context.getPackag‌​eName(), 0)
.firstInstallTime;

(从https://stackoverflow.com/a/5311917/2694254复制并粘贴,还有其他解决方案可在该站点上获取安装日期)

如果在安装OEM应用之前已经公开发布了您的应用,则您仍需要做出一些假设,例如“如果已安装应用但未在同一天打开”。