幾乎每個app都要涉及到版本迭代桐早,所以癣缅,版本更新是一份很重要的功能。今天我也給我的app做了一份版本更新的功能哄酝。
1.基礎(chǔ)知識友存,打開項目app里,找到bulid.gradle陶衅,可以看到versionCode 和versionName,其中versionCode是整型值屡立,理論上,每次改動其值都要加1搀军,versionName是版本名膨俐,這個也就是我們在app里經(jīng)秤禄剩看到的版本名:v1.0.1.
我們升級版本的原理就是,請求后臺焚刺,拿到當(dāng)前程序的版本號敛摘,也就是VersionCode,去和請求到的數(shù)據(jù)作比對,如果自己的服務(wù)器返回的版本號大于當(dāng)前的就可以提示更新了檩坚。
2.由于要做到兼容着撩,我們不得不提動態(tài)權(quán)限和8.0出現(xiàn)的問題。
首先匾委,我們得在配置文件里聲明一些需要的權(quán)限拖叙。
這兩個權(quán)限需要特殊注意一下。
接著我們找到合適的時機赂乐,做一次網(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)用”的許可。
這里還有一點要注意希柿,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),朵唯手機(4.4)盆顾,魅族(5.1),堅果pro(7.1.2),一加3(7.1.2)畏梆,和三星s8(8.1)上測試都是很正常的您宪,順利的一套走下來。
在此記錄下奠涌,希望自己成長和幫助更多的Android開發(fā)者宪巨。