前一段時間寫了關(guān)于8.0的一篇文章,講述的主要是8.0的通知欄的適配問題,,最近在項目開發(fā)的時候又遇到了另外一種情況,。 現(xiàn)在基本上每個安卓應(yīng)用都有在線更新功能,應(yīng)該很多人都知道7.0添加了文件夾限制訪問的權(quán)限,,主要就是拍照還有文件安裝問題需要開發(fā)者去設(shè)置FileProvider共享文件這里就不多講了 ,,今天主要講的就是8.0的一些權(quán)限問題 以前安裝未知來源應(yīng)用的時候一般會彈出一個彈窗讓用戶去設(shè)置允許還是拒絕,并且設(shè)置為允許之后,,所有的未知來源的應(yīng)用都可以被安裝,。 Android8.0的變化是,未知應(yīng)用安裝權(quán)限的開關(guān)被除掉,,取而代之的是未知來源應(yīng)用的管理列表,,需要在里面打開每個應(yīng)用的未知來源的安裝權(quán)限。Google這么做是為了防止一開始正經(jīng)的應(yīng)用后來開始通過升級來做一些不合法的事情,,侵犯用戶權(quán)益,。 當(dāng)你的應(yīng)用直接適配到Android8之后,內(nèi)部啟動應(yīng)用安裝是會被阻塞的,,如果不處理好這個未知來源的權(quán)限,,會導(dǎo)致應(yīng)用根本無法更新,只能去應(yīng)用市場重新下載。 那么如何來適配8.0這一個新變化呢,? 首先第一點需要做的就是打開這個開關(guān) 在清單文件里面添加權(quán)限 第二點就是在安裝應(yīng)用的時候先做判斷是否已經(jīng)授權(quán) if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if(getPackageManager().canRequestPackageInstalls()){ //已經(jīng)同意權(quán)限在這里執(zhí)行安裝應(yīng)用的代碼 }else{ //沒有允許 需要去申請權(quán)限,,由于這個權(quán)限不是運行時權(quán)限,所有需要用戶手 //動去開啟權(quán)限,,可以給用戶一個彈窗 提示用戶去權(quán)限列表開啟權(quán)限 開啟設(shè) //置的代碼 8.0新的API Intent intent =new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); startActivityForResult(intent, 1); } } 然后在onActivityResult里面接受回調(diào) if(resultCode == RESULT_OK && requestCode ==1) { //再次執(zhí)行上面的流程,,包含權(quán)限判等} 經(jīng)過以上的操作就能很好的解決掉8.0應(yīng)用安裝會出現(xiàn)的問題了 |
|
來自: szxlzc人生何求 > 《生活百科》