android 8.0安装apk

android 8.0安装apk需要请求未知来源权限

//xml配置

/**
 * 检测版本8.0
 */
public void checkOreo() {
    if (SdkVersionUtils.hasOreo()) {//8.0
        //判断是否可以直接安装
        boolean canInstall = getPackageManager().canRequestPackageInstalls();
        if (canInstall) {
            //安装apk
            installApk();         
        } else {
            //rxpermissions请求权限
            mRxPermissions
                    .request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
                    .subscribe(granted -> {
                        if (granted) {
                            //安装apk
                            installApk();
                        } else if (shouldShowRequestPermissionRationale(Manifest.permission.REQUEST_INSTALL_PACKAGES)) {
                             //引导用户去打开权限
                            Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
                            startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES);
                        } else {
                            Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
                            startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES);
                        }
                    });
        }
    } else {
        //安装apk
        installApk()
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case GET_UNKNOWN_APP_SOURCES:
            checkOreo();
            break;
    }
}

你可能感兴趣的:(android 8.0安装apk)