DocumentsContract.getDocumentId(uri)返回String路徑而不是Long類型數(shù)字

近期在部分安卓手機中獲取文件,發(fā)現(xiàn)部分安卓手機的uri路徑中返回的不是 content://media/extenral/images/media/17766 這種常規(guī)類型的 地址
而是返回的是 content://media/extenral/images/media/raw:/storage/emulated/0/Download/my_file.pdf 類似這種的地址
這樣在咱們常用的獲取地址中就會報錯了 java.lang.NumberFormatException' Exception

解決方法


image.png

修改isDownloadsDocument(uri) 中的方法按下述方法進行修改就完美解決了

else if (isDownloadsDocument(uri)) {
                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"), ContentUris.parseId(uri));
                        return getDataColumn(context, contentUri, null, null);
                    } catch (NumberFormatException e) {
                        Log.i("zhj", e.getMessage());
                        return null;
                    }
                }
            }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容