【发布时间】:2014-11-21 07:11:49
【问题描述】:
根据我在文档中的理解,当我在清单中使用意图过滤器注册 BroadcastReceiver 时,将调用 onReceive 方法。 我的应用程序使用 DownloadManager 来处理文件下载。我想听 DOWNLOAD_COMPLETE 动作。所以,在我的清单中,我有一个这样的意图过滤器:
<receiver
android:name="com.myapp.DownloadReceiver" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
我的类方法是这样的:
private DownloadManager manager;
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(result));
request.setTitle("MyTitle");
request.setDescription("MyDescription");
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, Test.txt);
manager.enqueue(request);
此接收器将接收由 DownloadManager 发送的所有意图。有没有办法通过侦听仅由我的应用程序排队的已完成下载来限制过滤?如果我尝试android:exported="false",它将不会收到 DownloadManager 广播,因为它们来自另一个应用程序。
如果我过滤 ID,我的 onReceive 方法仍然会被调用。我想要实现的是避免我的接收器接收所有事件。
谢谢!
【问题讨论】:
-
What i want to achieve is avoiding that my receiver will receive ALL the events.您的接收器仅被调用用于下载完成事件,我认为在清单中注册您的接收器是个好主意,因为即使用户关闭,您也可以尽快处理完成的文件你的应用程序。
标签: android android-intent broadcastreceiver intentfilter