如何检测Google Play商店是否正在下载/安装特定应用?

时间:2014-04-09 00:49:38

标签: android google-play-services google-play

许多应用程序提供了安装开发人员或开发人员合作伙伴制作的其他应用程序的建议。这些建议只是可以安装推荐应用程序的Play商店的链接。

如果符合以下条件,我不想为app X提供建议:

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

检测X是否安装很简单,但我似乎找不到任何API来从Google Play读取下载/安装状态。有没有办法检测用户是否正在安装应用程序X?

2 个答案:

答案 0 :(得分:3)

  

有没有办法检测用户是否正在安装   app X?

您最接近的是使用NotificationListenerService

来自文档:

  

在新通知时接收来自系统的呼叫的服务   发布或删除。

但考虑到最近在API级别18和您的使用案例中添加了此Service,您可以考虑使用BroadcastReceiver并在调用android.intent.action.PACKAGE_ADDEDandroid.intent.action.PACKAGE_REMOVED时进行监听。这样,一旦安装或删除了应用程序,您就可以使用程序包名称执行所需操作,例如提供Play商店的链接。

以下是一个例子:

<强>广播接收器

public class PackageChangeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent == null || intent.getData() == null) {
            return;
        }

        final String packageName = intent.getData().getSchemeSpecificPart();
        // Do something with the package name
    }

}

AndroidManifest

<receiver android:name="your_path_to.PackageChangeReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <action android:name="android.intent.action.PACKAGE_REMOVED" />

        <data android:scheme="package" />
    </intent-filter>
</receiver>

答案 1 :(得分:-1)

我知道有一种方法可以做到这一点。但是,它需要您从URL启动下载。

背后的简单想法是使用

getContentLength()

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

然后,你可以简单地使用

YouInputStream.read(TheData)

查看下载进度。

关于如何在Download a file with Android, and showing the progress in a ProgressDialog

执行此操作,实际上有更详细的答案

就此而言,也许您可​​以访问正在下载应用程序的套接字,然后按照上面的相同步骤操作。我没有这方面的经验。