Répondre

0

Vous pouvez faire comme ça.

DownloadManager downloadManager; 
    downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE); 
    Uri uri = Uri.parse("http://xxx.apk"); 
    DownloadManager.Request request = new DownloadManager.Request(uri); 
    // You can choose network type 
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); 
    downloadManager.getRecommendedMaxBytesOverMobile(getApplicationContext()); 
    final long flag = downloadManager.enqueue(request); 

    IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); 
    BroadcastReceiver receiver = new BroadcastReceiver(){ 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      long anotherFlag = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID,-1); 
      if(anotherFlag == flag){ 
       // do something you want to do 
      } 
     } 

    }; 
    registerReceiver(receiver, filter); 
+0

merci KeLiuyue, mais je pensais à implémenter une classe, qui implémente broadcastreceiver. Et pour cela j'essayais d'ajouter , qui n'affiche pas l'action name = "android.intent.action.DOWNLOAD_COMPLETE". C'est possible? – user3678389

+0

@ user3678389 oui, vous pouvez le faire.Mon moyen est l'enregistrement dynamique BroadcastReceive.Vous utilisez un enregistrement statique BroadcastReceive.Il est correct. – KeLiuyue

+0

@ user3678389 vous pouvez regarder ceci [https://developer.android.com/guide/components/broadcasts.html](https://developer.android.com/guide/components/broadcasts.html) – KeLiuyue