1. 程式人生 > >Android DownLoadManager 下載

Android DownLoadManager 下載

使用DownLoadManager實現下載apk功能,並安裝

使用downloadmanager需要了解:

DownloadManager.Request();
DownloadManager.Query();

Request用來發送請求
Query 用來查詢下載資訊

DownLoadManager具體使用:

首先構建一個Request物件, 引數是一個下載請求地址

   DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

在通知欄顯示下載

   request.setNotificationVisibility
(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

設定下載路徑

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, apkName);

獲取DownLoadManager

DownloadManager mDownloadManager = (DownloadManager)mContext.getSystemService(Context.DOWNLOAD_SERVICE);

放置到下載佇列裡,執行下載

 downloadId 
= mDownloadManager.enqueue(request);

下載過程中我們還可以監聽下載的狀態

獲取Query

 DownloadManager.Query query = new DownloadManager.Query();

只包含帶有給定id的下載。

 query.setFilterById(downloadId);

查詢,獲得Cursor

Cursor cursor = mDownloadManager.query(query);

下載狀態:

 if(cursor.moveToFirst()){
  int status = cursor.getInt
(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); switch (status) { //下載暫停 case DownloadManager.STATUS_PAUSED: break; //下載延遲 case DownloadManager.STATUS_PENDING: break; //正在下載 case DownloadManager.STATUS_RUNNING: break; //下載完成 case DownloadManager.STATUS_SUCCESSFUL: Log.d("dog","下載成功"); installAPK(); break; //下載失敗 case DownloadManager.STATUS_FAILED: Log.d("dog","下載失敗"); Toast.makeText(mContext, "下載失敗", Toast.LENGTH_SHORT).show(); break; } }

獲取下載總大小,當前大小

 if(cursor.moveToFirst()){
//當前大小
 int curtSize= cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
//下載總大小
 int totalSize = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
 }

使用完別忘記關閉

 cursor.close();

下載完成之後開始安裝:

private void installAPK() {
        File apkFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), apkName);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
        mContext.startActivity(intent);
    }

可以使用計時器來監聽重新整理下載進度,下載完成後呼叫系統安裝.

相關推薦

Android DownloadManager下載並自動彈出安裝(轉載)

1.版本2.3以上 2. <uses-permission android:name="android.permission.INTERNET" />       <uses-permission android:name="android.per

Android DownloadManager 下載完成並安裝

DownloadManager 下載完成並安裝 話說blog還是要堅持寫的。僅僅是一個態度的問題 ……. DownloadManager 是Android系統提供的一個很

Android DownLoadManager 下載

使用DownLoadManager實現下載apk功能,並安裝 使用downloadmanager需要了解: DownloadManager.Request(); DownloadManager.Query(); Request用來發送請求 Quer

Android使用系統DownloadManager下載更新軟體,並自動跳轉到安裝頁面

介紹:https://www.jianshu.com/p/7ad92b3d9069 1.下載apk /* * 下載apk * @param context * @param title 通知的標題 * @param url 下載的地址 * @param id 返回一個加入下載佇列的i

使用Android自帶DownloadManager下載檔案

package com.hebaijun.downloadtest; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import android.app.Activity; import android.a

Android 使用系統下載管理器DownloadManager下載檔案

使用系統下載管理器,主要有兩個類:DownloadManager, DownloadManager.Request 1.建立一個下載    宣告一個DownloadManager物件 private DownloadManager mDownloadManager; m

Android 使用系統自帶的DownloadManager下載apk

首先扯點別的:清明節回了一趟黃島,去了學校看了看,也是物是人非了呀。酒也沒少喝,前天做了一夜的車早上9點多到上海,然後直接殺奔公司上班,也是沒誰了。 今天記錄一下DownloadManager的使用。參考連結會在文章末尾給出。先來個效果圖。 以下載一個萬

Android Studio下載地址

check zip dmg includes tro see app ren eve https://developer.android.com/studio/index.html#Requirements Android Studio includes all the

Android SDK下載安裝及配置教程

搭建 roi 根據 空間 jre xtra 項目 lose android 最近Neo突發神經,想要將學過的一些計算機視覺、機器學習中的算法都放到移動設備上去跑跑,因為移動開發是大勢所趨嘛,希望能夠通過這樣一個實踐的過程,找到一些新的靈感(該不會是為了賺錢吧…),我自己目前

android studio 下載 sdk 失敗

system manager 下載 class ges 分享 set sys pos android studio 打開項目出現以下錯誤時,點擊去安裝,會提示“All packages are not available for download” 錯誤。 解決辦法是: 打

2018年Unity結合Android SDK下載安裝及配置教程

Edito 安裝和配置 href csdn pack unity 存放位置 soft name 原文:2018年Unity結合Android SDK下載安裝及配置教程

Android 模擬器下載、編譯及調試

端點 emulator version rep bug err 2.3 redist ext4 Android 模擬器源碼下載Android 模擬器源碼的下載與 Android AOSP 源碼庫的下載過程類似,可以參考 Google 官方提供的 Android 源碼下載文檔

Android AsyncHttpClient 下載檔案 Content-Type not allowed! 錯誤

專案開發更新版本時候下載apk使用AsyncHttpClient 及BinaryHttpResponseHandler來處理 但總是報errororg.apache.http.client.HttpResponseException: Content-Type not allowed! 錯誤

Android原生下載(上篇)基本邏輯+斷點續傳

零、前言 1.今天帶來的是Android原生下載的上篇,主要核心是斷點續傳,多執行緒下載將會在下篇介紹 2.本例使用了Activity,Service,BroadcastReceiver三個元件 3.本例使用了兩個執行緒:LinkURLThread做一些初始工作,DownLoadThread進行核心下

Android原生下載(下篇)多檔案下載+多執行緒下載

零、前言 1.上篇實現了單執行緒的單檔案下載,本篇將講述多個檔案的多執行緒下載,在此之前希望你先弄懂上篇 2.本篇將用到上篇之外的技術: 多執行緒、執行緒池(簡)、RecyclerView、資料庫多執行緒訪問下的注意點、volatile AtomicLong(簡) 最終靜態的效果

Android URL 下載檔案

首先需要一個執行緒。 new Thread(new Runnable() { @Override public void run() { try { URL url = new URL

Android原始碼下載教程(repo)

環境 ubuntu系統 原始碼下載 首先下載repo工具 mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo &

Android Studio 下載 3.2.1

Android Studio downloads Platform Android Studio package Size SHA-256 checksum Windows (64-bit) android

Android NDK 下載 r16b

NDK 下載 選擇與您的開發平臺對應的 NDK 軟體包。要了解最新版 NDK 以及早期 NDK 版本中都有哪些變更,請參閱 NDK 修訂歷史記錄。 最新穩定版本 (r16b) 平臺 軟體包 大小(位元組) SHA1 校驗和

android 解決下載時檔名包含中文和空格的問題

專案中遇到了下載檔案檔名是中文 而且還有空格 如果不對連線進行處理 下載就會報錯 要想解決這個問題 只需對你的url 進行編碼然後替換空格用編碼表示 //對路徑進行編碼 然後替換路徑中所有空格 編碼之後空格變成“+”而空格的編碼表示是“%20” 所以將所有的“+”替換成“%20”就可以了