Из того, что я понял в документации, когда я регистрирую BroadcastReceiver, используя фильтр намерений в своем манифесте, вызывается метод onReceive. Мое приложение использует DownloadManager для обработки загрузки файлов. Я хочу прослушать действие DOWNLOAD_COMPLETE. Так, в моем манифесте, у меня есть фильтр намерений, как это:Могу ли я фильтровать BroadcastReceiver, кроме использования фильтров намерений?
<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, поскольку они поступают из другого приложения. Если я фильтрую идентификаторы, мой метод onReceive по-прежнему вызывается. Я хочу добиться того, чтобы мой получатель получал ВСЕ события. Спасибо!
'Что я хочу достичь, так это избежать того, что мой получатель получит ВСЕ события. Ваш приемник вызван только для загрузки полных событий, и я думаю, что это хорошая идея зарегистрировать ваш приемник в манифесте, потому что вы можете обработать свой как можно скорее, если пользователь закрыл ваше приложение. – mmlooloo