Android 8.0不能自動(dòng)安裝APK問(wèn)題的解決方法(完美適配)
Android8.0之前
未知應(yīng)用安裝權(quán)限默認(rèn)開啟,如下圖所示

8.0以下手機(jī)未知應(yīng)用安裝權(quán)限.png
Android8.0之后
未知應(yīng)用安裝權(quán)限默認(rèn)關(guān)閉,且權(quán)限入口隱藏。
如何開啟未知應(yīng)用安裝權(quán)限的入口,并設(shè)置允許安裝?
在清單文件中添加權(quán)限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
判斷當(dāng)前是否為8.0以上系統(tǒng)(在這之前也可以對(duì)7.0系統(tǒng)進(jìn)行判斷,這里代碼沒(méi)有貼出)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
boolean hasInstallPermission = isHasInstallPermissionWithO(context);
if (!hasInstallPermission) {
startInstallPermissionSettingActivity(context);
return;
}
}
如果為8.0以上系統(tǒng),則判斷是否有 未知應(yīng)用安裝權(quán)限
@RequiresApi (api = Build.VERSION_CODES.O)
private boolean isHasInstallPermissionWithO(Context context){
if (context == null){
return false;
}
return context.getPackageManager().canRequestPackageInstalls();
}
如果沒(méi)有 未知應(yīng)用安裝權(quán)限 ,則需要手動(dòng)開啟
/**
* 開啟設(shè)置安裝未知來(lái)源應(yīng)用權(quán)限界面
* @param context
*/
@RequiresApi (api = Build.VERSION_CODES.O)
private void startInstallPermissionSettingActivity(Context context) {
if (context == null){
return;
}
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
((Activity)context).startActivityForResult(intent,REQUEST_CODE_APP_INSTALL);
}
Activity回調(diào)(這一步根據(jù)需求來(lái)確定)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode== Activity.RESULT_OK ){
when(requestCode){
REQUEST_CODE_APP_INSTALL -> {
onSettingCheckUpdate()
}
}
}
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
OpenGL Shader實(shí)例分析(8)彩色光圈效果
這篇文章主要為大家詳細(xì)介紹了OpenGL Shader實(shí)例分析第8篇,彩色光圈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
Android獲取手機(jī)配置信息具體實(shí)現(xiàn)代碼
下面為大家介紹下使用android獲取手機(jī)配置信息的具體過(guò)程,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-06-06
Android中使用TextView實(shí)現(xiàn)高仿京東淘寶各種倒計(jì)時(shí)效果
今天給大家?guī)?lái)的是僅僅使用一個(gè)TextView實(shí)現(xiàn)一個(gè)高仿京東、淘寶、唯品會(huì)等各種電商APP的活動(dòng)倒計(jì)時(shí)。今天小編把實(shí)現(xiàn)代碼分享到腳本之家平臺(tái),對(duì)android textclock 倒計(jì)時(shí)效果感興趣的朋友參考下吧2016-10-10
Android 三級(jí)NestedScroll嵌套滾動(dòng)實(shí)踐
這篇文章主要介紹了Android 三級(jí)NestedScroll嵌套滾動(dòng)實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
android:descendantFocusability方法介紹
開發(fā)中很常見(jiàn)的一個(gè)問(wèn)題,項(xiàng)目中的listview不僅僅是簡(jiǎn)單的文字,常常需要自己定義listview,問(wèn)題就出現(xiàn)了,可能會(huì)發(fā)生點(diǎn)擊每一個(gè)item的時(shí)候沒(méi)有反應(yīng),無(wú)法獲取的焦點(diǎn)2012-11-11
詳解Android封裝一個(gè)全局的BaseActivity
這篇文章主要介紹了詳解Android封裝一個(gè)全局的BaseActivity,對(duì)封裝感興趣的同學(xué),可以參考下2021-04-04
Android中SharedPreference詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了 Android中SharedPreference詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
android TabHost(選項(xiàng)卡)的使用方法
Android中的選項(xiàng)卡是用TabHost實(shí)現(xiàn)的,下面我們用一個(gè)例子說(shuō)明他的使用方法2013-11-11

