获取给定路径的光标

Get Cursor of given path

我有包含图像真实路径的 uri 对象。我知道我们需要在查询时使用选择字符串,但我不擅长 sql.

如何让光标代表该图像?

这是我的 DTO 投影字符串。

  String[] projection = {
            MediaStore.Images.ImageColumns._ID,
            MediaStore.Images.ImageColumns.DISPLAY_NAME,
            MediaStore.Images.ImageColumns.DATA,
            MediaStore.Images.ImageColumns.WIDTH,
            MediaStore.Images.ImageColumns.HEIGHT,
            MediaStore.Images.ImageColumns.MIME_TYPE};

以及裁剪库中的 Uri returns。

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == UCrop.REQUEST_CROP) {
        final Uri resultUri = UCrop.getOutput(data);
    } else if (resultCode == UCrop.RESULT_ERROR) {
        final Throwable cropError = UCrop.getError(data);
    }
}

感谢您的帮助。

一般来说,一个Uri不一定代表文件系统上的一个文件,更不用说有一个你可以确定的路径,更不用说是一个你可以访问的文件。

对于方案为 fileUrigetPath() returns 文件的文件系统路径。但是,您可能无法通过文件系统读取或写入该文件(尽管这表明创建 Uri 并将其提供给您的人存在编码错误)。

对于任何其他类型的 Uri — 最常见的是具有 content 方案的那些 — 无法确定文件系统路径,因为不要求内容是普通文件。它可能是加密文件、存储在数据库中 BLOB 列中的内容、从网络下载的内容或无数其他模式。