5

を使用してサーバーから画像をダウンロードしていますDownload Manager

ファイルを正常にダウンロードし、必要な場所に配置します。しかし、何らかの理由で通知が残り、削除できないようです。ダウンロード マネージャーのコードは次のとおりです。

mDownloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

Uri uri = Uri.parse("URL"));

long enqueue = mDownloadManager.enqueue(new DownloadManager.Request(uri)
            .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI)
            .setAllowedOverRoaming(false)
            .setTitle("Title")
            .setDescription("File description")
            .setDestinationInExternalPublicDir("Folder", "Filename")
            .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE));

BroadcastReceiver onComplete = new BroadcastReceiver() {
    public void onReceive(Context ctxt, Intent intent) {
        Toast.makeText(getApplicationContext(), "Download Completed", Toast.LENGTH_SHORT).show();
    }
 };

ダウンロードした通知を削除するにはどうすればよいですか? .

さまざまな通知表示モードをすべて設定しようとしましたが、うまくいきませんでした。BroadcastReceiverが終了したら、BroadcastReceiverからできることはありますか?

4

1 に答える 1

8

私はなんとか自分の問題を解決することができました。私はインテントからダウンロードIDを取得し、BroadcastReceiverそれをから削除する必要がありましたDownloadManager

BroadcastReceiver onComplete = new BroadcastReceiver() {
    public void onReceive(Context ctxt, Intent intent) {
        Toast.makeText(getApplicationContext(), "Download Completed", Toast.LENGTH_SHORT).show();

        // Get the download_id of the completed download.
        long download_id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

        // Remove the completed download from the DownloadManager
        mDownloadManager.remove(download_id);
    }
 };

mDownloadManager.remove(download_id)また、を実行すると、ファイルがメモリから削除されることに注意してください。ファイルを元々保存したい場所に永続的に保存するには、コードを追加する必要がありました。

于 2013-01-22T10:01:42.840 に答える