Android 8.0不能自動安裝APK問題的解決方法(完美適配)
Android8.0之前
未知應用安裝權限默認開啟,如下圖所示

8.0以下手機未知應用安裝權限.png
Android8.0之后
未知應用安裝權限默認關閉,且權限入口隱藏。
如何開啟未知應用安裝權限的入口,并設置允許安裝?
在清單文件中添加權限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
判斷當前是否為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),則判斷是否有 未知應用安裝權限
@RequiresApi (api = Build.VERSION_CODES.O)
private boolean isHasInstallPermissionWithO(Context context){
if (context == null){
return false;
}
return context.getPackageManager().canRequestPackageInstalls();
}
如果沒有 未知應用安裝權限 ,則需要手動開啟
/**
* 開啟設置安裝未知來源應用權限界面
* @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()
}
}
}
}
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Android中使用TextView實現(xiàn)高仿京東淘寶各種倒計時效果
今天給大家?guī)淼氖莾H僅使用一個TextView實現(xiàn)一個高仿京東、淘寶、唯品會等各種電商APP的活動倒計時。今天小編把實現(xiàn)代碼分享到腳本之家平臺,對android textclock 倒計時效果感興趣的朋友參考下吧2016-10-10
android:descendantFocusability方法介紹
開發(fā)中很常見的一個問題,項目中的listview不僅僅是簡單的文字,常常需要自己定義listview,問題就出現(xiàn)了,可能會發(fā)生點擊每一個item的時候沒有反應,無法獲取的焦點2012-11-11
Android中SharedPreference詳解及簡單實例
這篇文章主要介紹了 Android中SharedPreference詳解及簡單實例的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09

