john6lq:
最近 APP 有用户反馈遇到这方面问题,我理解 Android 系统图片分享,无论多少张图片,只要通过 FileProvider
转为 Uri ,然后塞到 Intent 里,然后给 Intent 设置 Intent.FLAG_GRANT_READ_URI_PERMISSION
就可以了。
但是测试发现,8.0.62 版本微信发送多张图片,大概率会出现 转发图片失败,请检查原图片消息的图片是否存在
的错误提示。
下面是荣耀手机论坛的反馈中的错误信息:

我使用 AndroidX core
支持库中的 ShareCompat
分享图片,发现确实如此,而 8.0.58 的微信表现正常。
ShareCompat.IntentBuilder(context)
.setType("image/*")
.setChooserTitle("Share via")
.also {
uris.forEach { uri ->
it.addStream(uri)
}
}.startChooser()
找到官方文档,按照微信团队发布的 FileProvider 适配链接给每个 uri 加上:
context.grantUriPermission("com.tencent.mm", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
确实可以分享成功了,但是这没遵守开发规范啊,按照系统设计,发送方调用 revokeUriPermission
前微信一直能获取这个图片。而且如果所有 APP 都这么干,我要写死多少个包名在 APK 里面?(另外我发现分享图片到微信,微信还强制要求获取存储权限才给分享,这太流氓了。)
我不能完全确定是微信的问题,也许他们有什么苦衷?也许单纯就是 BUG ?也许是我调用的方式不对?
想问下大家有没有碰到?开发中是怎么适配的?因为我用 MT 管理器
试了下并没有遇到这个问题。