效果圖
系統通知欄
系統文件夾
示例代碼
String uriStr = "https://qd.myapp.com/myapp/qqteam/AndroidQQ/mobileqq_android.apk";
Uri mTargetUri = Uri.parse(uriStr);
DownloadManager.Request mRequest = new DownloadManager.Request(mTargetUri);
//設置允許使用的網絡類型,這裏是移動網絡和wifi都可以
mRequest.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
//下載過程中通知欄會一直顯示該下載,在下載完成後仍然會顯示,直到用戶點擊該通知或者消除該通知
mRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
mRequest.setTitle("下載");
mRequest.setDescription("資源包正在下載");
//設置下載後文件存放的位置,後面兩個參數分別是 “文件路徑”,“文件名稱”
mRequest.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS, "meitu.apk");
DownloadManager mManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
if(mManager!=null){
mManager.enqueue(mRequest);
}
DownloadManager類中的廣播會在特定的時候自動發送,我們只要定製自己的Receiver來接收廣播就行.
//下載完成時,發送廣播對應的Action爲:ACTION_DOWNLOAD_COMPLETE
//Notification被點擊時發送廣播對應的Action爲:ACTION_NOTIFICATION_CLICKED
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
DownloadCompleteReceiver receiver = new DownloadCompleteReceiver();
registerReceiver(receiver, filter);
class DownloadCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
Tip:可用FileObserver監聽進度