適配Android 8.0版本更新安裝與通知欄的一些坑
前言
Android 8.0系統(tǒng)更新之后,app的更新將不再像之前的系統(tǒng)版本一樣能夠直接下載安裝包之后直接安裝(以前安裝未知來(lái)源應(yīng)用的時(shí)候一般會(huì)彈出一個(gè)彈窗讓用戶(hù)去設(shè)置允許還是拒絕,并且設(shè)置為允許之后,所有的未知來(lái)源的應(yīng)用都可以被安裝),8.0需要用戶(hù)給予允許app安裝未知來(lái)源應(yīng)用的權(quán)限(比如你的app 名字為A,當(dāng)你需要更新時(shí),則需要使用app的用戶(hù) 授權(quán)A這個(gè)app 允許安裝未知來(lái)源的權(quán)限,才能完成正常的更新操作)。
Android8.0的變化是,未知應(yīng)用安裝權(quán)限的開(kāi)關(guān)被除掉,取而代之的是未知來(lái)源應(yīng)用的管理列表,需要在里面打開(kāi)每個(gè)應(yīng)用的未知來(lái)源的安裝權(quán)限(說(shuō)實(shí)話(huà),這個(gè)權(quán)限要找到還真的不是那么容易,我第一次就找了半天才找到。。也是尷尬)。Google這么做是為了防止一開(kāi)始正經(jīng)的應(yīng)用后來(lái)開(kāi)始通過(guò)升級(jí)來(lái)做一些不合法的事情,侵犯用戶(hù)權(quán)益。當(dāng)你的應(yīng)用直接適配到Android8之后,內(nèi)部啟動(dòng)應(yīng)用安裝是會(huì)被阻塞的,如果不處理好這個(gè)未知來(lái)源的權(quán)限,會(huì)導(dǎo)致應(yīng)用根本無(wú)法更新,只能去應(yīng)用市場(chǎng)重新下載。
好了,廢話(huà)不多說(shuō),最近適配了8.0的檢查更新的功能,包括通過(guò)uri安裝和notification提示進(jìn)度。網(wǎng)上的例子很多 但是都很坑,需要加權(quán)限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
這個(gè)權(quán)限是不需要?jiǎng)討B(tài)申請(qǐng)的。一些坑人的帖子還寫(xiě)的很有道理的樣子,要申請(qǐng) 并沒(méi)有什么卵用。
下邊說(shuō)一下具體的適配步驟及注意事項(xiàng):
1、添加權(quán)限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
2、動(dòng)態(tài)申請(qǐng)權(quán)限在這里簡(jiǎn)單說(shuō)下:
manifest里添加
在res目錄下添加xml目錄
3、關(guān)于URI獲取的工具類(lèi)(可加群195026919在群共享獲取),由于排版問(wèn)題 只能截圖了。
4、調(diào)用方式,調(diào)用安裝代碼
所有的URI獲取 都用下邊代碼
Uri uri = FileProvider7.getUriForFile(context,updateFile);
安裝apk代碼
調(diào)用之后會(huì)彈出下邊這樣的提示框,而不是一個(gè)應(yīng)用加載列表手動(dòng)選擇點(diǎn)擊授權(quán)。
5、通知欄notification注意事項(xiàng)
用下邊的版本進(jìn)行編譯項(xiàng)目 之前Notification.Builder的方式能支持8.0 的手機(jī),但是如果用26去編譯在8.0上就會(huì)有問(wèn)題了notification不會(huì)出現(xiàn)等問(wèn)題,notification的在一些8.0以下的個(gè)別的手機(jī)上也會(huì)有問(wèn)題,特別是小米的。一些參數(shù)得單獨(dú)設(shè)置,
<uses-sdk android:minSdkVersion=”8″ android:targetSdkVersion=”23″ />
在適配8.0手機(jī)的時(shí)候最好用
NotificationChannel來(lái)去實(shí)現(xiàn)通知欄,免得以后再出現(xiàn)兼容的問(wèn)題。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Android Fragment實(shí)現(xiàn)底部通知欄
- android實(shí)現(xiàn)常駐通知欄遇到的問(wèn)題及解決辦法
- Android通知欄前臺(tái)服務(wù)的實(shí)現(xiàn)
- Android App自動(dòng)更新之通知欄下載
- Android 下載文件通知欄顯示進(jìn)度條功能的實(shí)例代碼
- Android 8.0系統(tǒng)中通知欄的適配詳解
- Android 8.0系統(tǒng)中通知欄的適配微技巧
- Android開(kāi)發(fā)實(shí)現(xiàn)判斷通知欄是否打開(kāi)及前往設(shè)置頁(yè)面的方法
- 關(guān)于A(yíng)ndroid中點(diǎn)擊通知欄的通知啟動(dòng)Activity問(wèn)題解決
- Android 通知欄的使用方法
相關(guān)文章
點(diǎn)擊微信內(nèi)網(wǎng)頁(yè)a標(biāo)簽直接跳轉(zhuǎn)打開(kāi)淘寶APP的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于如何實(shí)現(xiàn)點(diǎn)擊微信內(nèi)網(wǎng)頁(yè)a標(biāo)簽直接跳轉(zhuǎn)打開(kāi)淘寶APP的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-11-11android中實(shí)現(xiàn)手機(jī)號(hào)碼的校驗(yàn)的示例代碼
本篇文章主要介紹了android中實(shí)現(xiàn)手機(jī)號(hào)碼的校驗(yàn)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09淺析Kotlin使用infix函數(shù)構(gòu)建可讀語(yǔ)法流程講解
這篇文章主要介紹了淺析Kotlin使用infix函數(shù)構(gòu)建可讀語(yǔ)法,我們?cè)贙otlin中就多次使用A to B這樣的語(yǔ)法結(jié)構(gòu)構(gòu)建鍵值對(duì),包括Kotlin自帶的mapOf()函數(shù),這種語(yǔ)法結(jié)構(gòu)的優(yōu)點(diǎn)是可讀性強(qiáng)2023-01-01Android開(kāi)發(fā)Compose集成高德地圖實(shí)例
這篇文章主要為大家介紹了Android開(kāi)發(fā)Compose里使用高德地圖實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08靈活使用Android中ActionBar和ViewPager切換頁(yè)面
這篇文章主要介紹了如何靈活使用Android中ActionBar和ViewPager切換頁(yè)面,感興趣的小伙伴們可以參考一下2015-12-12android實(shí)現(xiàn)定時(shí)拍照并發(fā)送微博功能
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)定時(shí)拍照并發(fā)送微博功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Android內(nèi)置SQLite的使用詳細(xì)介紹
這篇文章主要介紹了Android內(nèi)置SQLite的使用詳細(xì)介紹,文章通過(guò)文章展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09android連續(xù)拖動(dòng)導(dǎo)致掛起的解決方法
本文給大家分享的是在安卓的項(xiàng)目開(kāi)發(fā)中遇到連續(xù)拖動(dòng)對(duì)象,導(dǎo)致掛起的問(wèn)題的解決方法,也是經(jīng)過(guò)很多網(wǎng)友的提示,最終才找到解決方法,這里記錄一下,分享給大家。2015-05-05