1. 程式人生 > >開源專案:版本更新

開源專案:版本更新

640?wx_fmt=png

本文作者

640?wx_fmt=png

01

2-2018

azhon

部落格:https://github.com/azhon

宣告:本文由作者 azhon授權釋出,未經原作者允許請勿轉載

 看到上面藍色字了嗎,點下吧

640?wx_fmt=png

目錄

  • 編譯問題

  • 效果圖

  • 功能介紹

  • DownloadManager

  • UpdateConfiguration

  • 使用步驟

  • Demo下載體驗

  • 結語

編譯問題

  • 因為適配了Android O的通知欄,所以依賴的v7包版本比較高appcompat-v7:26.1.0

  • 使用的gradle版本為gradle-4.1-all,所以建議使用Android Studio 3.0及以上的版本開啟此專案

效果圖

640?wx_fmt=png 640?wx_fmt=png
640?wx_fmt=png 640?wx_fmt=png

功能介紹

支援斷點下載

支援後臺下載

支援自定義下載過程

支援 裝置 >= Android M 動態許可權的申請

支援通知欄進度條展示(或者自定義顯示進度)

支援Android N

支援Android O

DownloadManager:配置文件

初始化使用DownloadManager.getInstance(this)

屬性描述預設值是否必須設定
context上下文nulltrue
apkUrlapk的下載地址nulltrue
apkNameapk下載好的名字nulltrue
downloadPathapk下載的位置nulltrue
smallIcon通知欄的圖示(資源id)-1true
configuration這個庫的額外配置nullfalse
apkVersionCode更新apk的versionCode
(如果設定了那麼庫中將會進行版本判斷
下面的屬性也就需要設定了)
1false
apkVersionName更新apk的versionNamenullfalse
apkDescription更新描述nullfalse
apkSize新版本的安裝包大小(單位M)nullfalse

UpdateConfiguration:配置文件

屬性描述預設值
notifyId通知欄訊息id1011
notificationChannel適配Android O的渠道通知詳情查閱原始碼
httpManager設定自己的下載過程null
breakpointDownload是否需要支援斷點下載true
enableLog是否需要日誌輸出true
onDownloadListener下載過程的回撥null
jumpInstallPage下載完成是否自動彈出安裝頁面true
showNotification是否顯示通知欄進度(後臺下載提示)true

使用步驟

  • build.gradle進行依賴

    implementation 'com.azhon:appupdate:1.1.0'
  • 簡單用法:建立DownloadManager

DownloadManager manager = DownloadManager.getInstance(this);
manager.setApkName("QQ.apk")
       .setApkUrl("http://gdown.baidu.com/data/wisegame/74dadae1bde205b0/QQ_776.apk")
       .setDownloadPath(Environment.getExternalStorageDirectory() + "/AppUpdate")
       .setSmallIcon(R.mipmap.ic_launcher)
       //可設定,可不設定
       .setConfiguration(configuration)
       .download();
  • 相容Android N 及以上版本,在你應用的Manifest.xml新增如下程式碼

<provider
   android:name="android.support.v4.content.FileProvider"
   <!--這個不用改-->
   android:authorities="${applicationId}"
   android:exported="false"
   android:grantUriPermissions="true">
   <meta-data
       android:name="android.support.FILE_PROVIDER_PATHS"
       android:resource="@xml/file_paths_public" />

</provider>

  • 資原始檔res/xml/file_paths_public.xml內容

<?xml version="1.0" encoding="utf-8"?>
<paths>
   <external-path
       name="app_update"
       <!--這裡的 AppUpdate 要與你設定的下載目錄一致-->

       path="AppUpdate" />
</paths>
  • 相容Android O及以上版本,需要設定NotificationChannel(通知渠道);庫中已經寫好可以前往查閱NotificationUtil.java:https://github.com/azhon/AppUpdate/blob/master/appupdate/src/main/java/com/azhon/appupdate/utils/NotificationUtil.java

  • 溫馨提示:升級對話方塊中的內容是可以上下滑動的哦??!

Demo下載體驗

點選下載Demo進行體驗:https://github.com/azhon/AppUpdate/blob/master/apk/appupdate.apk

結語

  • 如果大家在使用的過程中有什麼問題,歡迎提Issuse告知。

  • 如果大家有什麼好的建議或者需求,也可以提Issuse或者傳送郵件至:[email protected]

640?wx_fmt=jpeg

劉某人程式設計師

個人微信:Android_LiuGuiLin

新浪微博:@劉某人程式設計師

640?wx_fmt=jpeg

看看我的分享

  長按二維碼關注

640?wx_fmt=png640?wx_fmt=png

相關推薦

小程序版本更新後獲取用戶信息變更

現在 pre .com html clas code develop get evel 小程序:版本更新後獲取用戶信息變更 更新後,以前獲取用戶信息,是通過wx.getUserInfo,然後就會彈出授權窗口,現在必須通過button ,才能實現; <button o

記錄我第一個開源專案clever-logger

自己寫的一個簡單易用的Nodejs日誌中介軟體,適用於connect和express框架 1、可以記錄request、response中的一些資料和定義於日誌,支援顯示在控制檯和本地檔案。 2、可自定義日誌檔案組織形式:1)、按日期作為資料夾儲存日誌檔案 2)、日期作為日誌名的一部分 3

開源】Android開源專案始終

介,,介紹 內個什麼,這是一個 Android 平臺的 APP,專案基於 RxAndroid+Retrofit+Glide 開發,使用MVP架構(好像大家都喜歡這麼寫…)。 最近經濟什麼的不太好大家都知

帶你學開源專案OkHttp--自己動手實現OkHttp

一、開源專案 OkHttp 在Android、Java開發領域中,相信大家都聽過或者在使用Square家大名鼎鼎的網路請求庫: OkHttp https://github.com/square/okhttp ,當前多數著名的開源專案如 Fresco、Glide、 Picasso

開源專案購物軟體的開發

效果: 模組展示: 登陸展示: 購物車效果圖 支付過程效果圖: 地址中心效果圖: 流程圖: 程式碼所用到的技術和工具: 程式碼架構 mvp; 開源框架 EventBus; ButterKnife; Da

通用型認證與授權最小系統,以較小的代價實現中立開源專案UniAuth

一個 App + 一個 DB時代的終結 五年前,就如很多創業公司剛開始的時候一樣,點融網的主要業務架構在一個被稱為MainApp + Workflow上的應用:MainApp處理投資者的投資、充值、提現等投資端的操作;用Workflow來處理所有的進件、審批、放款、催收等貸款端的操作。當業務體量並不

餓了麼開源專案Java Comparator生成器

版權所有。所有權利保留。 歡迎轉載,轉載時請註明出處: 公司Android專案裡經常需要對元素進行排序,而排序都是多欄位的,相應的Comparator比較難寫。於是我就寫了這麼一個工具類,使用者只需要指定排序規則,便可以自動生成相應的Comparator。 專案地

Github上比較實用的開源專案(持續更新中)

https://github.com/hongyangAndroid/FlowLayout Android流式佈局,支援單選、多選等,適合用於產品標籤等 AutoCompleteTextView for android with KMP algorithm https:/

世界級的開源專案TiDB 如何重新定義下一代關係型資料庫

著名的開源分散式快取服務 Codis 的作者,PingCAP 聯合創始人& CTO ,資深 infrastructure 工程師的黃東旭,擅長分散式儲存系統的設計與實現,開源狂熱分子的技術大神級別人物。即使在網際網路如此繁榮的今天,在資料庫這片邊界模糊且不確定地帶,

開源專案XUtil詳解

       //RequestParams params = new RequestParams();// 預設編碼UTF-8         //params.addHeader("name", "value");         //params.addQueryStringParameter("nam

餓了麼開源專案便捷高效的Android資料持久化儲存框架

版權所有。所有權利保留。 歡迎轉載,轉載時請註明出處: Android應用開發時經常要對許多資料進行持久化儲存,便於以後訪問。 對於int、double、boolean這些基本資料,可以使用SharedPreference。對於一些物件,往SharedPrefe

React Native快速開發APP 開源專案廁所在哪

緣起 對於開發者來說,開發一款App,涉及到的條件還是蠻多的。比如需要服務介面、需要後臺編輯系統、需要運營工具等。因此,該案例藉助了高德開放平臺的免費資源、七牛的免費圖片儲存、微信公眾號的文章編輯系統、阿里雲服務部署等。這一切,對於開發一款小型的App已經足夠。如果能

講解開源專案5分鐘搭建私人Java部落格系統

本文適合剛學習完 Java 語言基礎的人群,跟著本文可瞭解和執行 Tale 專案。示例均在 Windows 作業系統下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的《講解開源專案》系列,今天給大家帶來一款基於 Java 語言的輕量級部落格開源專案——Tale 它擁有小、美

講解開源專案功能強大的 JS 檔案上傳庫

本文作者:HelloGitHub-kalifun HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 一、介紹 1.1 FilePond 它是一個 JavaScript 檔案上傳庫。可以拖入上傳檔案,並且會對

講解開源專案用 Python 生成有“靈魂”的二維碼

本文作者:HelloGitHub-LITTLECHIEH 這是 HelloGitHub 推出的《講解開源專案》系列,今天給大家推薦一個 Python 開源生成二維碼的專案——qrcode 一、介紹 1.1 二維碼 二維碼又稱二維條碼,常見的二維碼為 QR Code,QR 全稱 Quick Response

講解開源專案讓你成為靈魂畫手的 JS 引擎Zdog

本文作者:HelloGitHub-kalifun HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 今天給大家推薦一個使用 JavaScript 語言編寫的開源 Web 3D 模型專案 —— Zdog。 一

讓你如紳士般基於描述編寫 Python 命令列工具的開源專案docopt

作者:HelloGitHub-Prodesire HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 一、前言 在本系列前面四篇文章中,我們介紹了 argparse 的方方面面。它無疑是強大的,但使用

讓你如“老”紳士般編寫 Python 命令列工具的開源專案docopt

作者:HelloGitHub-Prodesire HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 一、前言 在第一篇“初探 docopt”的文章中,我們初步掌握了使用 docopt 的三個步驟,瞭

發起一個開源專案基於 .NET 的部落格引擎 fluss

今天我們發起一個開源專案,它的名字叫 fluss,fluss 是 river 的德語。 百川歸海,每一個部落格就如一條河流,輸入的是文字,流出的是知識,匯入的是知識的汪洋大海。 川流不息,fluss 是一個部落格引擎,致力於驅動知識的持續流轉,它的廠房設在 github 市 cnblogs 街 32412