0

我使用了以下方法,但是如何将广播权限设置为仅接收来自应用程序本身的广播?

context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), null, compressHandler);
4

2 回答 2

2

您可以使用LocalBroadcastManager,例如

LocalBroadcastManager.getInstance(this).registerReceiver(onComplete,
  new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

在这种情况下,您只是DownloadManager.ACTION_DOWNLOAD_COMPLETE用作常量值,但不会收到来自 androidDownloadManager类的任何信息

如果您想为您的广播设置权限,请参阅此问题

于 2013-02-18T19:04:09.337 回答
2

您正在尝试解决两个问题:

  1. 您只想接收由 DownloadManager 广播的意图
  2. 您只想接收作为您开始下载的结果的意图

要解决第一个问题,您应该在此方法中使用此字符串“android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS”作为您的广播权限:Context.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android. os.Handler)

解决第二个问题的一种方法是存储方法返回的长 ID DownloadManager.html#enqueue(android.app.DownloadManager.Request)。然后,当您收到意图时,您会检查 ID 是否与您请求的 ID 匹配。如果是这样,那么您知道这是您的要求。Intent 包含一个额外的 ID DownloadManager.html#EXTRA_DOWNLOAD_ID

于 2013-02-18T20:07:40.430 回答