설명서에서 이해 한대로, 내 매니페스트에 인 텐트 필터를 사용하여 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 브로드 캐스트가 수신되지 않습니다. 다른 응용 프로그램에서 온 것입니다. ID를 필터링하면 onReceive 메서드가 계속 호출됩니다. 내가 원하는 것은 수신자가 모든 이벤트를 수신하지 못하게하는 것입니다. 감사합니다.
'달성하고자하는 것은 수신자가 모든 이벤트를 수신하지 못하도록하는 것입니다. 수신자는 다운로드 완료 이벤트 만 요구되며, 수신자를 매니페스트에 등록하는 것이 좋습니다. 사용자가 응용 프로그램을 종료 했음에도 불구하고 가능한 빨리 파일을 완성했습니다. – mmlooloo