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 @ 2022-05-15 21:03  融化的雪0701  阅读(240)  评论(0)    收藏  举报