1.文件下载以及打开文件
首先在清单文件里进行注册
<provider
android:authorities="包名.fileProvider"
android:name="android.support.v4.content.FileProvider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
然后在res/xml文件里新建file_paths文件,内容如下
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_storage_root"
path="." />
</paths>
最后就是在打开文件的时候进行判断,添加如下代码即可
//判断是否是AndroidN以及更高的版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
File file = new File(Constant.FILE_PATH + mData.getAttachmentName());
uri = FileProvider.getUriForFile(mContext, "包名.fileProvider", file);
} else {
uri = Uri.fromFile(new File(param));
}
2.升级28以后要增加网络配置文件
在res/xml下新建network_security_config文件,内容如下
<network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>
然后在清单文件application目录下新增
android:networkSecurityConfig="@xml/network_security_config" tools:targetApi="n"
如果上述配置会影响其他api的调用就把文件改成如下即可:
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">服务器地址</domain>
</domain-config>
</network-security-config>