2012-03-13 12 views
9

Mi aplicación descarga archivos zip grandes (100mb +). Estoy usando el DownloadManager predeterminado para facilitar la descarga. Los documentos de la API de Google sugieren registrar un BroadcastReceiver y escuchar ACTION_NOTIFICATION_CLICKED. Estoy haciendo eso, pero no tengo ni idea de cómo llamar al DownloadManager desde BroadcastReceiver.¿Cómo iniciar el administrador de descargas de Broadcast Receiver?

Lo que quiero hacer es básicamente lo que hace el navegador. Cuando el navegador descarga un archivo y el usuario hace clic en la notificación de DownloadManager, aparece la ventana de DownloadManager. ¿Qué intento uso para lograr esto?

Mi Código:

<receiver android:name="com.test.receiver.DownloadReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.DOWNLOAD_COMPLETE"></action> 
    <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" /> 
    </intent-filter> 
</receiver> 

public class DownloadReceiver extends BroadcastReceiver { 

private static final String tag = DownloadReceiver.class.getSimpleName(); 

@Override 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { 
    *** code for unzipping removed *** 
    } 
    else if (DownloadManager.ACTION_NOTIFICATION_CLICKED.equals(action)) { 
     // Open the download manager 
     // BUT HOW??? 

    } 

Respuesta

19

encontrado mi propia respuesta. Esto hace el truco.

Intent dm = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); 
dm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(dm); 
Cuestiones relacionadas