效果:红色框框
微信开放平台适配:https://developers.weixin.qq.com/community/develop/doc/0004886026c1a8402d2a040ee5b401
各位开发者:
最新版本(7.0.13)的微信 SDK 已经适配使用FileProvider的方式来进行消息分享。
如果分享的消息中涉及文件路径(如图片类型消息),建议开发者针对Android 7.0版本及以上设备,判断微信版本支持(判断方法见后文【微信版本支持】一节)的情况下,更新为FileProvider的方式进行分享。
以下是具体的适配说明。
使用FileProvider
- 配置
在项目的AndroidManifest.xml添加相关配置,示例如下:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths" />
</provider>
// ${applicationId}为你的应用包名
在res/xml目录(如果没有xml目录,则新建一个)下,添加文件file_provider_paths.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="sharedata" path="shareData/"/>
</paths>
external-files-path表示通过 Context.getExternalFilesDir(null) 接口获取到的目录下的文件才可被共享,其他未配置的路径均不可被分享。同样的节点可以配置多个,以支持多个不同的子目录,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="sharedata" path="shareData/"/>
<external-files-path name="sharedata2" path="shareData2/"/>
</paths>
paths内部还支持节点配置其他的路径,比如:
- files-path,对应于 Context.getFilesDir() 获取到的目录
- cache-path,对应于 Context.getCacheDir() 获取到的目录
...
还有一些其他可配置的路径,开发者可自行了解使用。