原因:Android8.0的诸多新特性中有一个非常重要的特性:未知来源应用权限。
以前安装未知来源应用的时候一般会弹出一个弹窗让用户去设置允许还是拒绝,并且设置为允许之后,所有的未知来源的应用都可以被安装。
Android8.0的变化是,未知应用安装权限的开关被除掉,取而代之的是未知来源应用的管理列表,需要在里面打开每个应用的未知来源的安装权限。Google这么做是为了防止一开始正经的应用后来开始通过升级来做一些不合法的事情,侵犯用户权益。
当你的应用直接适配到Android8之后,内部启动应用安装是会被阻塞的,如果不处理好这个未知来源的权限,会导致应用根本无法更新,只能去应用市场重新下载。 (网上找的)
解决方法:
先加个权限:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
注意这个不是运行时权限,不能代码申请啊。
然后安装前检查一下
//安装前检测权限,安装android8.0 需要权限 public static void installBefore() { boolean haveInstallPermission; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { //先获取是否有安装未知来源应用的权限 haveInstallPermission = BGIApplication.getInstance().getCurrentActivity().getPackageManager().canRequestPackageInstalls(); if (!haveIn