2012-04-21 44 views
6

Tôi sử dụng DownloadManager để nhận trạng thái tải xuống, nhưng nó vẫn không hoạt động, nó không bao giờ nhảy đến điều kiện if(c.moveToFirst()) và tôi không biết tại sao. Ai có thể giúp tôi được không?Cách tải trạng thái tải xuống?

private final BroadcastReceiver myReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      if(Intent.ACTION_SCREEN_OFF.equals(action)) { 

       DownloadManager downloadMgr = (DownloadManager)getSystemService(DOWNLOAD_SERVICE); 
       DownloadManager.Query query = new DownloadManager.Query(); 
       query.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PENDING|DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_SUCCESSFUL); 
       Cursor c = downloadMgr.query(query); 
       if(c==null) { 
        // 
       } 
       else { 
        if(c.moveToFirst()) { 
         int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS); 
         int status = c.getInt(columnIndex); 
         if(status == DownloadManager.STATUS_RUNNING){ 
         //do something 
         } 
        } 
       } 
      } 
     } 
    }; 
+0

Rõ ràng con trỏ của bạn là trống rỗng? – Blundell

+0

Hm? Và làm thế nào tôi có thể giải quyết nó? – Adam

+0

Dường như con trỏ không trống, bởi vì nó luôn luôn đi đến khác, không phải nếu (c == null). – Adam

Trả lời

7

Dưới đây là một vài liên kết tham chiếu đến nó.

mẫu mã dưới ::

DownloadManager.Query query = null; 
    Cursor c = null; 
    DownloadManager downloadManager = null; 
    downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE); 
    query = new DownloadManager.Query(); 
    if(query!=null) { 
       query.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PAUSED|DownloadManager.STATUS_SUCCESSFUL| 
         DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_PENDING); 
      } else { 
       return; 
      } 
    c = downloadManager.query(query); 
    if(c.moveToFirst()) { 
    int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
    switch(status) { 
    case DownloadManager.STATUS_PAUSED: 
    break; 
    case DownloadManager.STATUS_PENDING: 
    break; 
    case DownloadManager.STATUS_RUNNING: 
    break; 
    case DownloadManager.STATUS_SUCCESSFUL: 
    break; 
    case DownloadManager.STATUS_FAILED: 
    break; 
    } 
} 
+0

Chúng tôi đang xem một số mã trạng thái của 0. Làm thế nào điều này có thể? – fobbymaster

Các vấn đề liên quan