一個(gè)越來越強(qiáng)大的android版本檢測更新庫

CheckVersionLib

最新文檔請看github

V2版震撼來襲,功能強(qiáng)大,鏈?zhǔn)骄幊烫硭拢{(diào)用簡單胯盯,集成輕松懈费,擴(kuò)展性強(qiáng)大

老規(guī)矩先看V2效果,這個(gè)版本最大的特點(diǎn)就是使用非常簡單博脑,相對于1.+版本

效果

v2.png
v2.gif

特點(diǎn)

  • [x] 任何地方都可以調(diào)用

  • [x] 簡單簡單簡單簡單(重要的話我說四遍)

  • [x] 擴(kuò)展性強(qiáng)大

  • [x] 所有具有升級功能的app均可使用憎乙,耶穌說的

  • [x] 更強(qiáng)大的自定義界面支持

  • [x] 支持強(qiáng)制更新(一行代碼)

  • [x] 支持靜默下載 (一行代碼)

  • [x] 適配到Android O

導(dǎo)入

compile 'com.allenliu.versionchecklib:library:2.0.0'

使用

和1.+版本一樣票罐,兩種模式

只使用下載模式

先來個(gè)最簡單的調(diào)用

        AllenVersionChecker
                .getInstance()
                .downloadOnly(
                        UIData.create().setDownloadUrl(downloadUrl)
                )
                .excuteMission(context);

UIData:UIData是一個(gè)Bundle,用于存放用于UI展示的一些數(shù)據(jù)泞边,后面自定義界面時(shí)候可以拿來用

請求服務(wù)器版本+下載

該模式最簡單的使用

   AllenVersionChecker
                .getInstance()
                .requestVersion()
                .setRequestUrl(requestUrl)
                .request(new RequestVersionListener() {
                    @Nullable
                    @Override
                    public UIData onRequestVersionSuccess(String result) {
                        //拿到服務(wù)器返回的數(shù)據(jù)该押,解析,拿到downloadUrl和一些其他的UI數(shù)據(jù)
                        ...
                        return UIData.create().setDownloadUrl(downloadUrl);
                    }

                    @Override
                    public void onRequestVersionFailure(String message) {

                    }
                })
                .excuteMission(context);


請求版本一些其他的http參數(shù)可以設(shè)置阵谚,如下

 AllenVersionChecker
                .getInstance()
                .requestVersion()
                .setHttpHeaders(httpHeader)
                .setRequestMethod(HttpRequestMethod.POSTJSON)
                .setRequestParams(httpParam)
                .setRequestUrl(requestUrl)
                .request(new RequestVersionListener() {
                    @Nullable
                    @Override
                    public UIData onRequestVersionSuccess(String result) {
                        //拿到服務(wù)器返回的數(shù)據(jù)蚕礼,解析,拿到downloadUrl和一些其他的UI數(shù)據(jù)
                        ...
                        UIData uiData = UIData
                                .create()
                                .setDownloadUrl(downloadUrl)
                                .setTitle(updateTitle)
                                .setContent(updateContent);
                        //放一些其他的UI參數(shù)梢什,拿到后面自定義界面使用
                        uiData.getVersionBundle().putString("key", "your value");
                        return uiData;

                    }

                    @Override
                    public void onRequestVersionFailure(String message) {

                    }
                })
                .excuteMission(context);

以上就是最基本的使用(庫默認(rèn)會有一套界面)奠蹬,如果還不滿足項(xiàng)目需求,下面就可以用這個(gè)庫來飆車了

一些其他的function設(shè)置

解釋下嗡午,下面的builder叫DownloadBuilder

 DownloadBuilder builder=AllenVersionChecker
                .getInstance()
                .downloadOnly();
                
                
      or          
                
                
                
 DownloadBuilder builder=AllenVersionChecker
                 .getInstance()
                 .requestVersion()
                 .request()

取消任務(wù)

 AllenVersionChecker.getInstance().cancelAllMission(this);

靜默下載

 builder.setSilentDownload(true); 默認(rèn)false

強(qiáng)制更新

設(shè)置此listener即代表需要強(qiáng)制更新囤躁,會在用戶想要取消下載的時(shí)候回調(diào)
需要你自己關(guān)閉所有界面

builder.setForceUpdateListener(() -> {
              forceUpdate();
          });

下載忽略本地緩存

如果本地有安裝包緩存也會重新下載apk

 builder.setForceRedownload(true); 默認(rèn)false

是否顯示下載對話框

builder.setShowDownloadingDialog(false); 默認(rèn)true

是否顯示通知欄

builder.setShowNotification(false);  默認(rèn)true

自定義通知欄

      builder.setNotificationBuilder(
                 NotificationBuilder.create()
                         .setRingtone(true)
                         .setIcon(R.mipmap.dialog4)
                         .setTicker("custom_ticker")
                         .setContentTitle("custom title")
                         .setContentText(getString(R.string.custom_content_text))
         );

是否顯示失敗對話框

  builder.setShowDownloadFailDialog(false); 默認(rèn)true

自定義下載路徑

  builder.setDownloadAPKPath(address); 默認(rèn):/storage/emulated/0/AllenVersionPath/

可以設(shè)置下載監(jiān)聽

   builder.setApkDownloadListener(new APKDownloadListener() {
             @Override
             public void onDownloading(int progress) {
                 
             }

             @Override
             public void onDownloadSuccess(File file) {

             }

             @Override
             public void onDownloadFail() {

             }
         });

自定義界面

自定義界面使用回調(diào)方式,開發(fā)者需要返回自己定義的Dialog(父類android.app)

  • 所有自定義的界面必須使用listener里面的context實(shí)例化

  • 界面展示的數(shù)據(jù)通過UIData拿

自定義顯示更新界面

設(shè)置CustomVersionDialogListener

  • 定義此界面必須有一個(gè)確定下載的按鈕荔睹,按鈕id必須為@id/versionchecklib_version_dialog_commit

  • 如果有取消按鈕(沒有忽略本條要求)狸演,則按鈕id必須為@id/versionchecklib_version_dialog_cancel

eg.

  builder.setCustomVersionDialogListener((context, versionBundle) -> {
            BaseDialog baseDialog = new BaseDialog(context, R.style.BaseDialog, R.layout.custom_dialog_one_layout);
            //versionBundle 就是UIData,之前開發(fā)者傳入的僻他,在這里可以拿出UI數(shù)據(jù)并展示
            TextView textView = baseDialog.findViewById(R.id.tv_msg);
            textView.setText(versionBundle.getContent());
            return baseDialog;
        });

自定義下載中對話框界面

設(shè)置CustomDownloadingDialogListener

  • 如果此界面要設(shè)計(jì)取消操作(沒有忽略)宵距,請務(wù)必將id設(shè)置為@id/versionchecklib_loading_dialog_cancel
    builder.setCustomDownloadingDialogListener(new CustomDownloadingDialogListener() {
            @Override
            public Dialog getCustomDownloadingDialog(Context context, int progress, UIData versionBundle) {
                BaseDialog baseDialog = new BaseDialog(context, R.style.BaseDialog, R.layout.custom_download_layout);
                return baseDialog;
            }
//下載中會不斷回調(diào)updateUI方法
            @Override
            public void updateUI(Dialog dialog, int progress, UIData versionBundle) {
                TextView tvProgress = dialog.findViewById(R.id.tv_progress);
                ProgressBar progressBar = dialog.findViewById(R.id.pb);
                progressBar.setProgress(progress);
                tvProgress.setText(getString(R.string.versionchecklib_progress, progress));
            }
        });

自定義下載失敗對話框

設(shè)置CustomDownloadFailedListener

  • 如果有重試按鈕請將id設(shè)置為@id/versionchecklib_failed_dialog_retry

  • 如果有 確認(rèn)/取消按鈕請將id設(shè)置為@id/versionchecklib_failed_dialog_cancel

   builder.setCustomDownloadFailedListener((context, versionBundle) -> {
            BaseDialog baseDialog = new BaseDialog(context, R.style.BaseDialog, R.layout.custom_download_failed_dialog);
            return baseDialog;
        });

最后


  • 更全面的使用請看demo

  • 感謝各位對本庫的支持

  • 歡迎star/issue

License


Apache 2.0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吨拗,隨后出現(xiàn)的幾起案子消玄,更是在濱河造成了極大的恐慌,老刑警劉巖丢胚,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翩瓜,死亡現(xiàn)場離奇詭異,居然都是意外死亡携龟,警方通過查閱死者的電腦和手機(jī)兔跌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來峡蟋,“玉大人坟桅,你說我怎么就攤上這事∪锘龋” “怎么了仅乓?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蓬戚。 經(jīng)常有香客問我夸楣,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任豫喧,我火速辦了婚禮石洗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘紧显。我一直安慰自己讲衫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布孵班。 她就那樣靜靜地躺著涉兽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪篙程。 梳的紋絲不亂的頭發(fā)上花椭,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音房午,去河邊找鬼矿辽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛郭厌,可吹牛的內(nèi)容都是我干的袋倔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼折柠,長吁一口氣:“原來是場噩夢啊……” “哼宾娜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扇售,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤前塔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后承冰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體华弓,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年困乒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寂屏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娜搂,死狀恐怖迁霎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情百宇,我是刑警寧澤考廉,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站携御,受9級特大地震影響昌粤,放射性物質(zhì)發(fā)生泄漏既绕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一婚苹、第九天 我趴在偏房一處隱蔽的房頂上張望岸更。 院中可真熱鬧鸵膏,春花似錦膊升、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至债查,卻和暖如春非区,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盹廷。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工征绸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俄占。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓管怠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缸榄。 傳聞我的和親對象是個(gè)殘疾皇子渤弛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,525評論 25 707
  • 1.什么是Activity?問的不太多她肯,說點(diǎn)有深度的 四大組件之一,一般的,一個(gè)用戶交互界面對應(yīng)一個(gè)activit...
    JoonyLee閱讀 5,728評論 2 51
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)鹰贵,斷路器晴氨,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • Android Studio JNI流程首先在java代碼聲明本地方法 用到native關(guān)鍵字 本地方法不用去實(shí)現(xiàn)...
    MigrationUK閱讀 11,841評論 7 123
  • 童話故事原版回憶:很久以前,有一位國王碉输,他的女兒很漂亮瑞筐,小公主的金球掉進(jìn)了水池里,在青蛙的幫助下?lián)旎亓私鹎蚶吧晒?..
    講故事的兔子小姐閱讀 933評論 8 14