0

以下の方法を使いましたが、アプリ自体からのブロードキャストのみを受信するように broadcastPermission を設定するにはどうすればよいですか?

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

2 に答える 2

2

解決しようとしている問題が 2 つあります。

  1. DownloadManager によってブロードキャストされたインテントのみを受け取りたい
  2. 開始したダウンロードの結果であるインテントのみを受け取りたい

最初の問題を解決するには、この文字列「android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS」をこのメソッドの BroadcastPermission として使用する必要があります: Context.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android. os.Handler)

2 番目の問題を解決する 1 つの方法は、メソッドによって返される長い ID を格納することDownloadManager.html#enqueue(android.app.DownloadManager.Request)です。次に、インテントを受け取ったら、ID が要求したものと一致するかどうかを確認します。もしそうなら、あなたはそれがあなたの要求であることを知っています. Intent には、extra に ID が含まれていますDownloadManager.html#EXTRA_DOWNLOAD_ID

于 2013-02-18T20:07:40.430 に答える
2

LocalBroadcastManagerたとえば、を使用できます

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

この場合、定数値として使用しているだけですが、AndroidクラスDownloadManager.ACTION_DOWNLOAD_COMPLETEからは何も受け取りませんDownloadManager

ブロードキャストに許可を設定したい場合は、この質問を参照してください

于 2013-02-18T19:04:09.337 に答える