android8.0以上更新apk未弹出安装界面的解决办法 |
您所在的位置:网站首页 › 安卓升级软件下载安装不了 › android8.0以上更新apk未弹出安装界面的解决办法 |
在更新apk时之前写的代码是适配android7.0的版本,android8.0,android9.0下载成功后,屏幕闪了一下,没有跳转到系统安装界面,随后查阅资料知android8.0添加了新的安全措施,不允许应用内安装未经过Google play验证的应用,所以我们又得针对8.0,9.0系统做适配. 第一步在xml文件里面写上权限 在清单文件中添加如下权限:发现并没有什么用,原来是没有打开安装未知应用的权限 判断是否已经获取到允许安装未知应用 在8.0中的PackageManager类中多了 canRequestPackageInstalls() 这个方法来检查是否已经获取到允许安装未知应用。 if (Build.VERSION.SDK_INT>=26){ boolean hasInstallPermission = isHasInstallPermissionWithO(mContext); if (!hasInstallPermission) { startInstallPermissionSettingActivity(mContext); return; }} @RequiresApi(api = Build.VERSION_CODES.O) private boolean isHasInstallPermissionWithO(Context context){ if (context == null){ return false; } return context.getPackageManager().canRequestPackageInstalls(); }startInstallPermissionSettingActivity方法是:开启设置安装未知来源应用权限界面,最好是写上apk的包名,直接跳转到当前apk权限界面 /** * 开启设置安装未知来源应用权限界面 * @param context */ @RequiresApi(api = Build.VERSION_CODES.O) private void startInstallPermissionSettingActivity(Context context) { if (context == null) { return; } Intent intent = new Intent(); //获取当前apk包URI,并设置到intent中(这一步设置,可让“未知应用权限设置界面”只显示当前应用的设置项) Uri packageURI = Uri.parse("package:" + context.getPackageName()); intent.setData(packageURI); //设置不同版本跳转未知应用的动作 if (Build.VERSION.SDK_INT >= 26) { //intent = new Intent(android.provider.Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI); intent.setAction(android.provider.Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); } else { intent.setAction(android.provider.Settings.ACTION_SECURITY_SETTINGS); } ((Activity) context).startActivity(intent); Toast.makeText(mContext, "请打开未知应用安装权限", Toast.LENGTH_SHORT).show(); } 这样以来8.0以上的手机就适配成功啦~
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |