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

Java 从Android中的URI获取文件路径时出错,java,android,file,uri,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);

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

问题就在这里。它只检查
图像中的投影。所以,如果文件的类型不同,您将无法获得路径<将返回代码>异常
。此外,最好使用:

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

并使用onw
try catch
块。这将防止你的应用程序崩溃

谢谢!我已经解决了。这就是我所做的,还有一些其他的小调整,使它工作:)