Android 如何从库中获取图像URI?
我需要从画廊取一张照片。我可以打开gallery来选择图像,但在选择图像后,它不会返回任何内容。我需要将该Android 如何从库中获取图像URI?,android,Android,我需要从画廊取一张照片。我可以打开gallery来选择图像,但在选择图像后,它不会返回任何内容。我需要将该fileUri发送到另一个活动,并在ImageView上显示它。 我可以做这个相机,就像在按钮上点击它调用相机,然后我捕获图像并发送到另一个活动 但我不明白我用什么做画廊。谁来帮我做这个 更新 这是我用来从相机上获取图像的 这是我用来从图库中获取图像的 但我希望以与captureImage()相同的方式执行此操作,以便将ImageUri发送到其他活动 OnActivityResult方法 我
fileUri
发送到另一个活动,并在ImageView上显示它。
我可以做这个相机,就像在按钮上点击它调用相机,然后我捕获图像并发送到另一个活动
但我不明白我用什么做画廊。谁来帮我做这个
更新
这是我用来从相机上获取图像的
这是我用来从图库中获取图像的
但我希望以与captureImage()相同的方式执行此操作,以便将ImageUri发送到其他活动
OnActivityResult方法
我通过launchUploadActivity()发送数据
提前感谢:)您好,请使用它从您的图库中获取路径
private void openCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
String currentTimeStamp = dateFormat.format(new Date());
f = new File(android.os.Environment.getExternalStorageDirectory(), currentTimeStamp);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(intent, 1);
}
private void openGallery() {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "Select File"), REQUEST_GALLERY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
try {
String click = f.getAbsolutePath();
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(User_Detail.KEY_ALBUM_IMAGE_PATH, click);
values.put(User_Detail.USER_ID, Utlity.user_id);
values.put(User_Detail.KEY_ID_ALBUM_REF, album_id);
long loginStat = db.insert(User_Detail.TABLE_4, null, values);
loadData(album_id);
} catch (Exception e) {
e.printStackTrace();
}
} else if (requestCode == 2) {
Uri selectedImage = data.getData();
String[] filePath = { MediaStore.Images.Media.DATA };
Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePath[0]);
picturePath = c.getString(columnIndex);
if (picturePath != null && picturePath.length() > 1) {
ContentValues va = new ContentValues();
} else {
}
SQLiteDatabase db = dbHelper.getWritableDatabase();
String image_path = picturePath;
ContentValues values = new ContentValues();
values.put(User_Detail.KEY_ALBUM_IMAGE_PATH, image_path);
values.put(User_Detail.USER_ID, Utlity.user_id);
values.put(User_Detail.KEY_ID_ALBUM_REF, album_id);
long loginStat = db.insert(User_Detail.TABLE_4, null, values);
loadData(album_id);
c.close();
Log.w("path of image from gallery......******************.........", picturePath + "");
}
}
}
试试这个,
编写onActivityResult()方法
这是getRealPathFromURI()方法
onActivityResult中的更改:
else if(requestCode == GALLERY_IMAGE_PICK && resultCode == RESULT_OK
&& null != data)
{
Uri selectedImage = data.getData();
String picturePath = getRealPathFromURI(selectedImage,
this);
Intent i = new Intent(MainActivity.this, UploadActivity.class);
i.putExtra("filePath", selectedImage);
i.putExtra("isImage", isImage);
startActivity(i);
}
}
}
public String getRealPathFromURI(Uri contentURI, Activity context) {
String[] projection = { MediaStore.Images.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = context.managedQuery(contentURI, projection, null,
null, null);
if (cursor == null)
return null;
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
String s = cursor.getString(column_index);
// cursor.close();
return s;
}
// cursor.close();
return null;
}
从uri获取文件路径
public String getPath(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
cursor.close();
cursor = getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}
你必须开始一个新的意图,startactivitytrace在哪里?你们能把它展示给类外的usDeclare私有文件,并创建两种方法从相机库中选择图像吗。。并根据您修改此代码此处图片路径包含您的图库选择的图像路径,但他想将
uri
发送到其他活动没有问题。。。您可以使用Bundle或putExtra()静态或通过它发送到下一个活动bu从文档中拾取时发生崩溃
private void openCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
String currentTimeStamp = dateFormat.format(new Date());
f = new File(android.os.Environment.getExternalStorageDirectory(), currentTimeStamp);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(intent, 1);
}
private void openGallery() {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "Select File"), REQUEST_GALLERY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
try {
String click = f.getAbsolutePath();
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(User_Detail.KEY_ALBUM_IMAGE_PATH, click);
values.put(User_Detail.USER_ID, Utlity.user_id);
values.put(User_Detail.KEY_ID_ALBUM_REF, album_id);
long loginStat = db.insert(User_Detail.TABLE_4, null, values);
loadData(album_id);
} catch (Exception e) {
e.printStackTrace();
}
} else if (requestCode == 2) {
Uri selectedImage = data.getData();
String[] filePath = { MediaStore.Images.Media.DATA };
Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePath[0]);
picturePath = c.getString(columnIndex);
if (picturePath != null && picturePath.length() > 1) {
ContentValues va = new ContentValues();
} else {
}
SQLiteDatabase db = dbHelper.getWritableDatabase();
String image_path = picturePath;
ContentValues values = new ContentValues();
values.put(User_Detail.KEY_ALBUM_IMAGE_PATH, image_path);
values.put(User_Detail.USER_ID, Utlity.user_id);
values.put(User_Detail.KEY_ID_ALBUM_REF, album_id);
long loginStat = db.insert(User_Detail.TABLE_4, null, values);
loadData(album_id);
c.close();
Log.w("path of image from gallery......******************.........", picturePath + "");
}
}
}
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
Uri selectedImageURI = data.getData();
imageFile = new File(getRealPathFromURI(selectedImageURI));
}
}
private String getRealPathFromURI(Uri contentURI) {
String result;
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
result = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
result = cursor.getString(idx);
cursor.close();
}
return result;
}
else if(requestCode == GALLERY_IMAGE_PICK && resultCode == RESULT_OK
&& null != data)
{
Uri selectedImage = data.getData();
String picturePath = getRealPathFromURI(selectedImage,
this);
Intent i = new Intent(MainActivity.this, UploadActivity.class);
i.putExtra("filePath", selectedImage);
i.putExtra("isImage", isImage);
startActivity(i);
}
}
}
public String getRealPathFromURI(Uri contentURI, Activity context) {
String[] projection = { MediaStore.Images.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = context.managedQuery(contentURI, projection, null,
null, null);
if (cursor == null)
return null;
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
String s = cursor.getString(column_index);
// cursor.close();
return s;
}
// cursor.close();
return null;
}
//handling the image chooser activity result
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri filePath1 = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(.getContentResolver(), filePath1);
profilePic.setImageBitmap(bitmap);
uploadProfilePic(filePath1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String getPath(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
cursor.close();
cursor = getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}