许多应用程序会提供建议,以安装由开发人员或开发人员合作伙伴制作的其他应用程序。 推荐内容只是指向Play商店的链接,可以从中安装推荐的应用。

在以下情况下,我不想为应用X提供建议:

  • App X已安装
  • App X正在安装中(例如,在Google Play上下载)

检测X是否已安装很容易,但是我似乎找不到任何API来读取Google Play的下载/安装状态。 有什么方法可以检测用户是否正在安装应用程序X?


Is there any way to detect if the user is in the process of installing
app X?

最接近此结果的方法是使用NotificationListenerService

从文档:

A service that receives calls from the system when new notifications
are posted or removed.

但是考虑到该Service是最近在API级别18中添加的,并且您是用例,因此您可以考虑使用BroadcastReceiver并监听何时调用android.intent.action.PACKAGE_ADDEDandroid.intent.action.PACKAGE_REMOVED。这样,一旦安装或删除了应用,您就可以使用包名称来完成所需的操作,例如提供指向Play商店的链接。

这是一个例子:

广播接收器

在您的AndroidManifest


我知道一种方法。但是,这将要求您启动从URL的下载。

背后的简单想法是使用

查看应用程序的内容长度(以字节为单位)。

然后,您可以简单地使用

查看下载进度。

实际上,有关如何执行此操作的详细信息,请参见使用Android下载文件并在ProgressDialog中显示进度。

关于这一点,也许您可??以访问正在下载应用程序的套接字,然后按照上面的相同步骤进行操作。我没有这个经验。