2016-06-10 169 views
2

我有一個BroadcastReceiver,它監聽下載完成操作,以便在下載完成時打開文件。下載管理器的獨立廣播接收器

我的問題是,用戶可能會下載一個文件,然後最小化屏幕,然後取消登記BroadcastReceiver,所以下載完成後文件不會自動打開。

如何設置獨立的BroadcastReceiver,以便在應用程序停止/銷燬時打開圖像。我無法弄清楚如何讓它聽取下載完成操作。

private BroadcastReceiver downloadReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     long referenceId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); 
     if (downloadReference == referenceId) { 
      DownloadManager.Query query = new DownloadManager.Query(); 
      query.setFilterById(referenceId); 
      Cursor cursor = downloadManager.query(query); 
      if (cursor.moveToFirst()) { 
       int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
       if (status == DownloadManager.STATUS_SUCCESSFUL) { 
        Intent intentpic = new Intent(); 
        intentpic.setAction(android.content.Intent.ACTION_VIEW); 
        intentpic.setDataAndType(Uri.fromFile(getActivity().getExternalFilesDir("/update/asd.jpg")), "image/*"); 
        startActivity(intentpic); 
        if(receiverRegistered) { 
         getActivity().unregisterReceiver(downloadReceiver); 
        } 
       } 
      } 
      cursor.close(); 
      Log.i(TAG, "Downloading of data just finished"); 
     } 
    } 
}; 
+0

只需調用'DownloadManage#query(DownloadManager.Query query)'當您的應用程序啓動時,您將知道到目前爲止已下載的內容 – pskink

回答

0

當您的應用程序處於後臺時,您不應該啓動活動。當用戶離開應用程序時,您的接收器沒有註冊是可以的。

取而代之,存儲圖像下載的信息,然後在應用程序恢復時檢查它。我不知道您的用例,但是,例如,您可以將此信息存儲到SharedPreferences,並在應用程序恢復時檢查它。然後你可以決定是否開始新的活動。