android 8.0以上 选择文件 下载内容 方法适配

测试好信云,传输文件模块,选择本地文件,在选择“下载内容”时会崩溃,一看:

 java.lang.NumberFormatException: For input string: "raw:/storage/emulated/0/Download/新建文本文档.txt"

这是个啥,定位到代码,是这样婶儿的:

final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
path = getDataColumn(context, contentUri, null, null);

id返回的明明是个字符串:raw:/storage/emulated/0/Download/新建文本文档.txt

搜搜是Android Oreo(8.0)以上版本 返回的结果会有不同,改成这样婶儿的就好了:

final String id = DocumentsContract.getDocumentId(uri);
if (!TextUtils.isEmpty(id)) {
    if (id.startsWith("raw:")) {
        return id.replaceFirst("raw:", "");
    }
    try {
        final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
        return getDataColumn(context, contentUri, null, null);
    } catch (NumberFormatException e) {
        return null;
    }
}
return path;

 

posted @   融化的雪0701  阅读(204)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示