以下の方法を使いましたが、アプリ自体からのブロードキャストのみを受信するように broadcastPermission を設定するにはどうすればよいですか?
context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), null, compressHandler);
以下の方法を使いましたが、アプリ自体からのブロードキャストのみを受信するように broadcastPermission を設定するにはどうすればよいですか?
context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), null, compressHandler);
解決しようとしている問題が 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
。
LocalBroadcastManager
たとえば、を使用できます
LocalBroadcastManager.getInstance(this).registerReceiver(onComplete,
new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
この場合、定数値として使用しているだけですが、AndroidクラスDownloadManager.ACTION_DOWNLOAD_COMPLETE
からは何も受け取りませんDownloadManager
ブロードキャストに許可を設定したい場合は、この質問を参照してください