2012-04-21 15 views
6

Ich benutze DownloadManager für den Status des Herunterladens, aber es funktioniert immer noch nicht, es springt nie auf die Bedingung if(c.moveToFirst()) und ich weiß nicht warum. Könnte mir bitte jemand helfen?Wie bekomme ich den Downloadstatus?

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

Offensichtlich hat Ihr Cursor leer ist? – Blundell

+0

Hm? Und wie kann ich es lösen? – Adam

+0

Es scheint, dass der Cursor nicht leer ist, weil es immer zu sonst geht, nicht zu if (c == null). – Adam

Antwort

7

Hier sind einige Verweis verweisen Sie es.

folgende Beispielcode ist ::

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

Wir sehen einige Statuscodes von 0. Wie ist das möglich? – fobbymaster