2012-04-21 16 views
6

Utilizo DownloadManager para obtener el estado de descarga, pero todavía no funciona, nunca salta a la condición if(c.moveToFirst()) y no sé por qué. ¿Podría alguien ayudarme por favor?¿Cómo obtener el estado de la descarga?

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

Obviamente el cursor está vacía? – Blundell

+0

¿Hm? ¿Y cómo puedo resolverlo? – Adam

+0

Parece que el cursor no está vacío, porque siempre va a else, no a if (c == null). – Adam

Respuesta

7

Aquí hay algunos enlaces refiéranlo.

código de ejemplo está por debajo ::

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

Estamos viendo algunos códigos de estado de 0. ¿Cómo es esto posible? – fobbymaster

Cuestiones relacionadas