2013-01-21 6 views
5

私はサーバからDownload Managerを使って画像をダウンロードしています。Android:DownloadManager - 通知付箋

ファイルを正常にダウンロードして、どこに置いてもいいです。しかし何らかの理由で通知スティックと私はを削除するように見えることはできません。次のようにダウンロードマネージャのためのコードは次のとおりです。

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から何かできることはありますか?

答えて

8

私は私の問題を解決することができました。 BroadcastReceiverでは、ダウンロードIDをインテントから取得して、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)を行うことで、これはメモリからファイルを削除することに注意したいです。元々保存したかった場所にファイルを永久に保存するコードを追加する必要がありました。

+2

「extra_download_id」をハードコードする代わりにDownloadManager.EXTRA_DOWNLOAD_IDを使用してください –

+0

他の解決策はありませんか?つまり、ダウンロードしたファイルを削除して通知をクリアするのはあまりクリーンではないということです(最初に保存する必要があります)。ファイルのコピーとファイルの削除だけで通知がクリアされます。 – Christian

関連する問題