在Android中从URI获取文件路径时出错

时间:2013-04-13 21:07:52

标签: java android file uri

这是一个返回给定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卡的任何位置。我应该搜索哪个投影文件路径?

1 个答案:

答案 0 :(得分:2)

问题出在这里。它仅检查Images中的预测。因此,如果文件类型不同,您将无法获得路径。 Exception将被退回。它也更好用:

 int column_index = cursor.getColumnIndex(MediaColumns.DATA);

并使用你的on try-catch块。这样可以防止您的应用崩溃