Android8.0之前
未知應(yīng)用安裝權(quán)限默認開啟,如下圖所示
8.0以下手機未知應(yīng)用安裝權(quán)限.png
Android8.0之后
未知應(yīng)用安裝權(quá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)(在這之前也可以對7.0系統(tǒng)進行判斷,這里代碼沒有貼出)
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();
}
- 如果沒有
未知應(yīng)用安裝權(quán)限
,則需要手動開啟
/**
* 開啟設(shè)置安裝未知來源應(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ù)需求來確定)
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()
}
}
}
}
最后蹋订,希望此篇博客對大家有所幫助,歡迎提出問題及建議共同探討刻伊,如有興趣可以關(guān)注我的博客露戒,謝謝椒功!