繁体   English   中英

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

[英]How to detect if a specific app is being downloaded/installed by the Google Play store?

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

如果出现以下情况,我不想为app X提供推荐:

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

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

有没有办法检测用户是否正在安装应用程序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>

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

背后的简单想法是使用

getContentLength()

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

然后,你可以简单地使用

YouInputStream.read(TheData)

看下载的进度。

使用Android下载文件时,实际上有更详细的解答如何解决这个问题,并在ProgressDialog中显示进度

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM