写了一个需要获取图片真实路径的app,在API29运行,就是打开相册返回选中图片的uri,再通过uri获取真实路径,在网上查看了几篇文章,在从DownloadsProvider中获取真实路径的代码是下面这段:
String documentId = DocumentsContract.getDocumentId(uri);
if (isDownloadsDocument(uri)) {
Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(documentId));
filePath = getDataColumn(context, contentUri, null, null);
}
然而问题是从DownloadsProvider中获取的uri的documentId都是“msf:+一个数字”的形式,例如“msf:25”,所以在Long.valueOf(documentId));这个地方就会报错,因为documentId不是纯数字而是包含英文的形式,但是我直接吧msf:这个非数字的部分去掉也不能获取到真实路径,所以应该是有另外某种转化方法可以获取到真实路径的。
但是为什么在网上查到的方法都是像上面代码这样会报错的方法,如果想从DownloadsProvider中获取真实路径应该怎么做呢?