这是一个返回给定URI的文件路径的代码。
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
//String[] projection = { MediaColumns.DATA };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
这适用于Gallery中的图像,因为投影是MediaStore.Images。如何获取所有其他目录的文件路径?该文件可以是文档类型,它可以位于SD卡的任何位置。我应该搜索哪个投影文件路径?
答案 0 :(得分:2)
问题出在这里。它仅检查Images
中的预测。因此,如果文件类型不同,您将无法获得路径。 Exception
将被退回。它也更好用:
int column_index = cursor.getColumnIndex(MediaColumns.DATA);
并使用你的on try-catch
块。这样可以防止您的应用崩溃