2012-03-13 15 views
9

La mia applicazione scarica file zip di grandi dimensioni (100mb +). Sto usando il DownloadManager predefinito per facilitare il download. I documenti dell'API di Google suggeriscono di registrare un BroadcastReceiver e di ascoltare ACTION_NOTIFICATION_CLICKED. Lo sto facendo, ma non ho idea di come chiamare DownloadManager da BroadcastReceiver.Come avviare il download manager dal Broadcast Receiver?

Quello che voglio fare è fondamentalmente ciò che fa il browser. Quando il browser scarica un file e l'utente fa clic sulla notifica DownloadManager, viene visualizzata la finestra DownloadManager. Quale intenzione uso per realizzare questo?

My Code:

<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??? 

    } 

risposta

19

Trovato la mia risposta. Questo fa il trucco.

Intent dm = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); 
dm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(dm); 
Problemi correlati