幾乎每個app都要涉及到版本迭代,所以,版本更新是一份很重要的功能。今天我也給我的app做了一份版本更新的功能。
1.基礎(chǔ)知識,打開項(xiàng)目app里,找到bulid.gradle,可以看到versionCode 和versionName,其中versionCode是整型值,理論上,每次改動其值都要加1,versionName是版本名,這個也就是我們在app里經(jīng)??吹降陌姹久簐1.0.1.

我們升級版本的原理就是,請求后臺,拿到當(dāng)前程序的版本號,也就是VersionCode,去和請求到的數(shù)據(jù)作比對,如果自己的服務(wù)器返回的版本號大于當(dāng)前的就可以提示更新了。
2.由于要做到兼容,我們不得不提動態(tài)權(quán)限和8.0出現(xiàn)的問題。
首先,我們得在配置文件里聲明一些需要的權(quán)限。

這兩個權(quán)限需要特殊注意一下。
接著我們找到合適的時機(jī),做一次網(wǎng)絡(luò)請求,然后判斷是否要更新


然后,就是要切記,一定要開啟先的線程去下載

這里需要注意下,當(dāng)我們的file文件下載完畢,需要安裝的時候,是很容易出錯的,這個時候我們要分版本來判斷,也就是在applyInstallCheck方法里

判斷當(dāng)前系統(tǒng)如果是大于等于8.0,那么就要判斷是否有安裝apk的權(quán)限,這個權(quán)限是8.0后新出現(xiàn)的,百度一下就可以看到詳細(xì)的介紹,Android?8.0? 中,Google?移除掉了容易被濫用的“允許位置來源”應(yīng)用的開關(guān),取消了“允許未知來源”的檢查框,如果想安裝一些第三方商店的應(yīng)用,則需要在每一次都手動授予“安裝未知應(yīng)用”的許可。
這里還有一點(diǎn)要注意,F(xiàn)ragment里動態(tài)申請權(quán)限和在Activity里申請是不一樣的,這里要使用Fragment的requestPermissions方法,而不是Activity里的,不然就會出現(xiàn)不走授權(quán)回調(diào)的情況。那么,說了這么多,我們再授權(quán)回調(diào)里又做了什么?

很簡單,拿到授權(quán)我們就去安裝apk,如果沒有,我們就要引導(dǎo)用戶去開啟相關(guān)的權(quán)限。
最后,就是安裝了

按照這樣一套流程走下走下來,我華為榮耀4C(4.4),朵唯手機(jī)(4.4),魅族(5.1),堅果pro(7.1.2),一加3(7.1.2),和三星s8(8.1)上測試都是很正常的,順利的一套走下來。
在此記錄下,希望自己成長和幫助更多的Android開發(fā)者。