利用 DownloadManager做版本更新的例子有很多,推薦使用:
http://www.itdecent.cn/p/bb4cde6e88c6#
但是集成的時(shí)候會(huì)遇到一個(gè)問題,
Unknown URL : content://downloads/my_downloads/2
解決方案:(我們需要把路徑改為file://開頭的)
將之前查找下載好的apk文件的代碼
Uri downloadFileUri = manager.getUriForDownloadedFile(downId);
File file = new File(new URI(downloadFileUri.toString()));
改為通過downId來查詢DownloadManager下載的[數(shù)據(jù)庫]的記錄,然后查找本地文件的路徑,如下所示:
Cursor c = downloadManager.query(new DownloadManager.Query().setFilterById(downId));
if(c != null){
c.moveToFirst();
int fileUriIdx = c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI);
String fileUri = c.getString(fileUriIdx);
String fileName = null;
//Android 7.0以上的方式:請(qǐng)求獲取寫入權(quán)限,這一步報(bào)錯(cuò)
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
if (fileUri != null) {
fileName = Uri.parse(fileUri).getPath();
}
} else {
//過時(shí)的方式:DownloadManager.COLUMN_LOCAL_FILENAME
int fileNameIdx = c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
fileName = c.getString(fileNameIdx);
}
File file = new File(fileName);
同時(shí)解決DownloadManager.COLUMN_LOCAL_FILENAME會(huì)在7.0及以上版本過時(shí)的問題 。
參考文章:
http://blog.csdn.net/ouyang_peng/article/details/62891782