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);
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
@ user3678389 oui, vous pouvez le faire.Mon moyen est l'enregistrement dynamique BroadcastReceive.Vous utilisez un enregistrement statique BroadcastReceive.Il est correct. – KeLiuyue
@ user3678389 vous pouvez regarder ceci [https://developer.android.com/guide/components/broadcasts.html](https://developer.android.com/guide/components/broadcasts.html) – KeLiuyue