V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
john6lq
V2EX  ›  Android

大家通过 Android 系统级途径分享图片到 8.0.62 版本的微信会出现问题吗?

  •  
  •   john6lq · 2 天前 · 794 次点击

    最近 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 管理器 试了下并没有遇到这个问题。

    4 条回复    2025-09-08 17:49:57 +08:00
    psklf
        1
    psklf  
       16 小时 31 分钟前
    “也许他们有什么苦衷?”

    没有苦衷,微信的技术能力就是垃圾。你以为微信很会遵守开发规范吗?
    jeesk
        2
    jeesk  
       15 小时 28 分钟前   ❤️ 1
    刚才试过了, 多张照片确实有可能失败。 感觉是就是微信的问题
    john6lq
        3
    john6lq  
    OP
       14 小时 27 分钟前
    @psklf 技术角度确实没有理由这么干,产品层面有什么特殊要求也不一定呢,我倾向于这么理解。
    jeesk
        4
    jeesk  
       8 小时 25 分钟前
    下午测试了一波, 貌似微信热更新修复了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:15 · PVG 02:15 · LAX 11:15 · JFK 14:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.