You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何转换onActivityResult获取的编码字符串文件路径格式?

解决MIUI Gallery路径的URL编码转换问题

你当前获取到的路径是经过URL编码的,其中%2F是斜杠/的URL转义字符,只需要对编码部分进行解码即可得到目标格式。以下是两种可行的实现方式:

方法一:使用URLDecoder直接解码

通过拆分路径,对编码的部分单独解码后重新拼接:

String encodedPath = "content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FScreenshots%2Ffilename.jpg";
// 按/raw/分割路径,保留前缀和编码部分
String[] pathSegments = encodedPath.split("/raw/", 2);
if (pathSegments.length == 2) {
    try {
        // 解码编码部分
        String decodedSegment = URLDecoder.decode(pathSegments[1], "UTF-8");
        // 拼接成目标路径
        String targetPath = pathSegments[0] + "/raw/" + decodedSegment;
        // 此时targetPath即为所需格式:content://com.miui.gallery.open/raw/storage/emulated/0/DCIM/Screenshots/filename.jpg
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
}

方法二:利用Uri类构建目标路径

借助Android的Uri工具类解析并重新构建路径:

String encodedPath = "content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FScreenshots%2Ffilename.jpg";
Uri originalUri = Uri.parse(encodedPath);
String rawEncodedSegment = originalUri.getLastPathSegment();

try {
    String decodedSegment = URLDecoder.decode(rawEncodedSegment, "UTF-8");
    // 重新构建Uri
    Uri targetUri = new Uri.Builder()
            .scheme(originalUri.getScheme())
            .authority(originalUri.getAuthority())
            .appendPath("raw")
            .appendEncodedPath(decodedSegment)
            .build();
    String targetPath = targetUri.toString();
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

注意:如果你的目标路径中Screenshot是笔误(原路径为Screenshots),无需额外处理;若确实需要修改文件夹名称,可在解码后添加字符串替换逻辑。

内容的提问来源于stack exchange,提问作者Matrix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:20:47