我使用了以下方法,但是如何将广播权限设置为仅接收来自应用程序本身的广播?
context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), null, compressHandler);
我使用了以下方法,但是如何将广播权限设置为仅接收来自应用程序本身的广播?
context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), null, compressHandler);
您可以使用LocalBroadcastManager
,例如
LocalBroadcastManager.getInstance(this).registerReceiver(onComplete,
new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
在这种情况下,您只是DownloadManager.ACTION_DOWNLOAD_COMPLETE
用作常量值,但不会收到来自 androidDownloadManager
类的任何信息
如果您想为您的广播设置权限,请参阅此问题
您正在尝试解决两个问题:
要解决第一个问题,您应该在此方法中使用此字符串“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
。