安卓:调用系统分享txt文件到微信

本文详细解析了在Android应用中遇到的文件资源获取失败问题,并提供了一个有效的解决方案,通过将FileProvider生成的Uri转换为MediaStore的content://格式,解决了包括微信在内的部分应用无法识别的问题。

昨天晚上搞了一下,不是闪退就是提示文件资源获取失败

心想着,代码没多大的问题啊,直到发现了一片文章:https://www.jianshu.com/p/796c28011dc2

我摘一下主要的信息

有些应用对于FileProvider生成的Uri无法识别,需要转化成MediaStore 的 content://。

微信就是其中之一

这是原文中的函数:不用管函数命名,这只是将路径文件转换为(MediaStore 的 content://)Uri的函数

public static Uri getImageContentUri(Context context, File imageFile) {
        String filePath = imageFile.getAbsolutePath();
        Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                new String[] { MediaStore.Images.Media._ID }, MediaStore.Images.Media.DATA + "=? ",
                new String[] { filePath }, null);
        Uri uri = null;

        if (cursor != null) {
            if (cursor.moveToFirst()) {
                int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
                Uri baseUri = 
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值