利用DownloadManager 做版本更新排除記錄

利用 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容