由于XXX原因, 把APP的
targetSdkVersion升级到了27,
首先第一个问题, app下载文件(自动升级) 使用okhttp下载文件就抛了异常:
也不知道什么原因, 咱也不敢问!!!
因此, 百度, Google, 查到需要添加这一句代码:
OkHttpClient mHttpClient = new OkHttpClient();
mHttpClient.setProtocols(Collections.singletonList(Protocol.HTTP_1_1));//就是这句
然后就正常下载了, 下载完成之后就要安装了, 但是有报错了, 上图:
这个就比较麻烦, 我们一步一步来:
1. 在清单配置文件添加:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="包名.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" /> <!-- xml文件下文件的名称 -->
</provider>
添加一个权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
第二步创建文件:
在res的文件下创建xml文件夹, 并创建file_paths.xml文件
文件里:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<external-path
name="download"
path="" />
</paths>
</resources>
第三步:
首先要判断版本了, 从24开始安装时有区别的, 说明现在android对权限和隐私要求越来越高了, 这个还是不错的.
这里面还有几个点不是很明白, 就不详细解释了, 大家自行Google
发现一个问题:
OPPO和VIVO机型 apk自动更新完成后没有进入到打开界面, 而是直接退出了, 这很不友好.
华为, 小米手机没有这个问题.
是因为:
这里, 要用addFlags(), 去添加, 而不是去set. !!!