获取给定路径的光标
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
不一定代表文件系统上的一个文件,更不用说有一个你可以确定的路径,更不用说是一个你可以访问的文件。
对于方案为 file
的 Uri
,getPath()
returns 文件的文件系统路径。但是,您可能无法通过文件系统读取或写入该文件(尽管这表明创建 Uri
并将其提供给您的人存在编码错误)。
对于任何其他类型的 Uri
— 最常见的是具有 content
方案的那些 — 无法确定文件系统路径,因为不要求内容是普通文件。它可能是加密文件、存储在数据库中 BLOB
列中的内容、从网络下载的内容或无数其他模式。
我有包含图像真实路径的 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
不一定代表文件系统上的一个文件,更不用说有一个你可以确定的路径,更不用说是一个你可以访问的文件。
对于方案为 file
的 Uri
,getPath()
returns 文件的文件系统路径。但是,您可能无法通过文件系统读取或写入该文件(尽管这表明创建 Uri
并将其提供给您的人存在编码错误)。
对于任何其他类型的 Uri
— 最常见的是具有 content
方案的那些 — 无法确定文件系统路径,因为不要求内容是普通文件。它可能是加密文件、存储在数据库中 BLOB
列中的内容、从网络下载的内容或无数其他模式。