1. 程式人生 > >Android DownloadManager 下載完成並安裝

Android DownloadManager 下載完成並安裝

DownloadManager 下載完成並安裝

話說blog還是要堅持寫的。僅僅是一個態度的問題 …….

DownloadManager 是Android系統提供的一個很好用的下載類。通過此類可以很方便的下載檔案並在通知欄顯示進度,不用再重寫通知欄。所以記錄一下使用方法與一些技巧。望批判

直接上程式碼吧

public void download(String downloadUrl) {
        DownloadManager manager = (DownloadManager) mContext
                .getSystemService
(Context.DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request( Uri.parse(downloadUrl)); request.setDescription("更新APP"); request.allowScanningByMediaScanner();// 設定可以被掃描到 request.setVisibleInDownloadsUi(true);// 設定下載可見 request.setNotificationVisibility
( DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);//下載完成後通知欄任然可見 String fileName = downloadUrl.substring(downloadUrl.lastIndexOf("/"));// 解析fileName request.setDestinationInExternalPublicDir( Environment.DIRECTORY_DOWNLOADS, fileName);// 設定下載位置,sdcard/Download/fileName
long refernece = manager.enqueue(request);// 加入下載並取得下載ID SharedPreferences sPreferences = mContext.getSharedPreferences( "downloadplato", 0); sPreferences.edit().putLong("plato", refernece).commit();//儲存此次下載ID }

獲取並儲存此次下載ID為了方便監聽下載完成,並處理相關下載後的事情,比如下載一個app,為了提高使用者體驗就要自動彈出安裝介面。這時候我們就要進行下載監聽

DownLoadBroadcastReceiver.java

package com.android.browser;

import android.annotation.SuppressLint;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;

import com.android.browser.core.LogUtils;
/**
 * 下載完成廣播監聽:比如下載APP
 * 
 * */
public class DownLoadBroadcastReceiver extends BroadcastReceiver {

    @SuppressLint("NewApi")
    public void onReceive(Context context, Intent intent) {
        long myDwonloadID = intent.getLongExtra(
                DownloadManager.EXTRA_DOWNLOAD_ID, -1);
        LogUtils.i("下載完成 ID = " + myDwonloadID);
        SharedPreferences sPreferences = context.getSharedPreferences(
                "downloadplato", 0);
        long refernece = sPreferences.getLong("plato", 0);
        if (refernece == myDwonloadID) {
            String serviceString = Context.DOWNLOAD_SERVICE;
            DownloadManager dManager = (DownloadManager) context
                    .getSystemService(serviceString);
            Intent install = new Intent(Intent.ACTION_VIEW);
            Uri downloadFileUri = dManager
                    .getUriForDownloadedFile(myDwonloadID);
            install.setDataAndType(downloadFileUri,
                    "application/vnd.android.package-archive");
            install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(install);
        }

    }

}

 // 記得註冊廣播

完成 Thank you . 謝謝

相關推薦

Android DownloadManager 下載完成安裝

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

DownloadManager下載APK安裝(適配7.0,免費下載)

效果圖 DownloadManager(主角) 作用:下載管理器是一個處理長時間執行的HTTP下載的系統服務。客戶端可能要求將URI下載到特定的目標檔案。下載管理器將在後臺進行下載。 過程:在MainActivity中開啟IntentServi

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

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

Android DownLoadManager 下載

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

Android實現下載圖片儲存到SD卡中

在檔案裡設定一個點選方法已進行點選下載: download.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String

android實現自動升級安裝開啟

/**   * 安裝APK檔案   */  private void installApk() {   File apkfile = new File(mSavePath,Constant.appFileName);   if (!apkfile.exists()) {    return;   }   //

使用CrossApp實現版本更新管理(iOS端給AppStore連結,android下載apk替換)

版本更新管理從思路上來說是挺簡單的   1: 和後臺的版本資訊進行比較 2: 符合更新條件就開始更新(跳轉到連結或者下載apk檔案) 3: 替換(限android) 第一步: 因人而異,我是和後臺人員定好版本號的格式(如1.1 、1.1.1)。因為考慮到適用性我乾脆就寫

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

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

Android N及以上版本應用安裝下載完成自動彈出安裝介面的適配方法

Android N及以上版本應用安裝包下載完成自動彈出安裝介面的適配方法   在實現下載和安裝APP功能的時候在Android較高版本可能會遇到如下的問題: 安裝Apk時報錯:android.os.FileUriExposedException: file:///storag

Android下載完成更新後,沒有開啟安裝成功介面,出現閃退問題

最開始以為是android7.0許可權問題,後來發現在6.0手機上也是會出現這種問題的 這是修改之前的程式碼: Intent intent = new Intent(Intent.A

Android----- 版本更新和 伺服器下載新版本APK安裝

前段時間有朋友問我版本更新的問題,所以來寫一篇版本更新和APK下載並安裝的部落格。 版本更新,幾乎在所有的專案中都用的到,一般是這樣的流程,當進入APP首頁是便會檢測版本是否為最新版本,不是則提示你下

Android下載安裝APK

package com.cardvalue.sys.activitys; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Date;

IntentService+Notifcation實現應用app後臺下載完成安裝(已適配8.0)

更新———————————- 現在已相容8.0的通知欄顯示,確保你的targetSdkVersion 是26或以上 以下為8.0的顯示圖片: app的更新模組放在後臺服務可以大大提高app的體驗,採用IntentService這種google為我們

Android APP更新下載,實現Notification通知欄進度通知,下載完成後點選安裝

    簡單做一個APP檢測更新的小工具,有點粗糙。不能斷點續傳,只用為個人覺得沒有必要,自己可根據大家的想法新增更多的功能,這裡只是為了想我一樣的初學者和比較簡約的人所提供。   效果如下:        基本思路先理一理,以我的實際開發為例:首先當然要一個網路去請求我們的

第一次使用Android Studio時你應該知道的一切配置(二):新建一個屬於自己的工程安裝Genymotion模擬器

人性 pro net 參考 json irb 一個地方 vid 調試 【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae/p/439

windows下如何下載安裝Python

.py back 版本號 eight word height win path lin 1.打開Python官網,點download中的windows(或者打開網址https://www.python.org/downloads/windows/) 2.下載exe後綴的可

Android SDK下載安裝及配置教程

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

網狐Android客戶端一鍵發布安裝到手機

oid post png info clas src log androi http 網狐Android客戶端一鍵發布並安裝到手機

Mac下命令行下載android源代碼構建apk過程

prope sdk ack 下載源 lib cal per make master 前提是java 、sdk、ndk 、cmake、gradle 、gradlew都已經安裝和配置好。 1、下載源碼: git clone http://git-ma.xxxx.com.

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

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