从Uri获取路径会抛出nullpointerexception

时间:2017-10-08 20:33:12

标签: android image path uri

我尝试获取图像文件的路径,但getPath()方法返回null(游标为null)。

@Bean

selectedImageUri = data.getData();

public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        if (cursor != null) {
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else
            return null;
    }

我真的不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

Uri不必代表您可以访问的文件系统上的文件。 Uri可能指向以下内容:

  • 存储在可移动存储上,您无法访问
  • 存储在另一个应用的内部存储中,您无法访问
  • 以加密形式存储,其中ContentProvider需要解密
  • 存储在SQLite数据库的BLOB列中,其中ContentProvider需要加载并提供它
  • 存储在“云”中,ContentProvider需要下载
  • 即时生成,此网页的方式为

您可以使用ContentResolveropenInputStream()获取InputStream所代表内容的Uri。您可以在您控制的某个文件上创建FileOutputStream。并且,您可以使用Java I / O从InputStream复制到OutputStream,在您控制的文件中创建自己的内容副本。