我的意图是不拍照然后将其保存到SD卡,获取链接等等。该图像已经在Android中使用原始相机应用程序。
所有我需要它如何获得关于SD卡的图像路径
模拟/ 0 / SD卡/ DCIM / 100ANDRO / image.jpg的
我如何获得最近拍摄的图像的格式。
答案 0 :(得分:3)
我已经完成了这样的事情:
final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
imageCursor.moveToFirst();
do {
String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
if (fullPath.contains("DCIM")) {
//--last image from camera --
return;
}
}
while (imageCursor.moveToNext());
答案 1 :(得分:2)
使用此命令从URI获取文件路径:
Uri selectedImageUri = data.getData();
selectedImagePath = getRealPathFromURI(selectedImageUri);
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
Cursor
提供对数据库查询返回的结果集的随机读写访问。
getContentResolver ()
为您的应用程序包返回ContentResolver
个实例。
如果要访问内容提供程序中的数据,可以使用应用程序上下文中的ContentResolver对象作为客户端与提供程序进行通信。 ContentResolver对象与提供程序对象进行通信,提供程序对象是实现ContentProvider的类的实例。提供者对象从客户端接收数据请求,执行请求的操作,并返回结果。
内容解析器包括与Content Provider类中的抽象方法(插入,删除,查询,更新)相对应的CRUD(创建,读取,更新,删除)方法。内容解析器不知道它正在与之交互的内容提供者的实现(也不需要知道);每个方法都传递一个URI,指定要与之交互的内容提供者。
MediaStore:媒体提供程序包含内部和外部存储设备上所有可用媒体的元数据。 MediaStore.images
包含所有可用图片的元数据。