我有这个解码content://URI的代码:
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(contentUri,
new String[] { MediaStore.Files.FileColumns.DATA },
null, null, null);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA);
cursor.moveToFirst();
return cursor.getString(columnIndex);
} finally {
if (cursor != null) {cursor.close()};
}
Run Code Online (Sandbox Code Playgroud)
但它不适用于FileProviderURI(例如下载文件的 Chrome Dev URI:)content://com.chrome.dev.FileProvider/downloads/。有没有办法获得真正的路径?
尝试这个:
@TargetApi(19)
private static String generatePath(Uri uri,Context context){
String filePath = null;
if(DocumentsContract.isDocumentUri(context, uri)){
String wholeID = DocumentsContract.getDocumentId(uri);
String id = wholeID.split(":")[1];
String[] column = { MediaStore.Video.Media.DATA };
String sel = MediaStore.Video.Media._ID + "=?";
Cursor cursor = context.getContentResolver().
query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
column, sel, new String[]{ id }, null);
int columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
}
return filePath;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11267 次 |
| 最近记录: |