收听其他应用的下载

时间:2016-08-23 10:38:22

标签: android download broadcastreceiver

我的应用应该监听下载(来自任何应用,例如浏览器),然后根据某些文件属性,通过通知提供一些操作。当应用程序当前未在前台运行时,这也应该有效,因此我使用静态定义的接收器(在AndroidManifest.xml中)。 但是,该应用程序永远不会收到"下载完成"意图。这是我的代码:

DownloadReceiver:

public class DownloadReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // This notification is just for testing purposes
        // to see if the DownloadReceiver works
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(context)
                        .setSmallIcon(R.drawable.ic_check)
                        .setContentTitle("Your download has finished.")
                        .setContentText("Download finished");

        NotificationManager mNotificationManager =
                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(0, mBuilder.build());
    }
}

的AndroidManifest.xml:

<receiver
    android:name=".DownloadReceiver">
    <intent-filter>
        <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
    </intent-filter>
</receiver>

根据互联网上的一些解决方案,我添加了android:exported=trueandroid:enabled=true,但都没有帮助。我也尝试在intent过滤器中使用常量名DownloadManager.DOWNLOAD_COMPLETE,但这对我没有帮助。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

经过深入研究后,我发现出于隐私原因这是not possible。有one possibility,虽然它实现起来并不容易(它涉及使用File Observer)。