这是我如何解决从相册中获取照片的意图
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, SELECT_PICTURE);
然后从结果中我走
的路径 Uri selectedImageUri = data.getData();
public String getPath(Uri selectedImageUri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
所选图片并将该图片放入SD卡。
但是当安装了Dropbox应用程序时,它也出现了,当我选择图像时,Uri就像
文件:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/FloorPlanImage/7th_floor_new.jpg
现在当我尝试使用getPath时,它会崩溃。你能告诉我如何解决这个问题,以便我可以采取图像路径并将其保存在SD卡中吗?
答案 0 :(得分:1)
我得到的问题是什么
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
没有返回任何内容,因为图像是从Dropbox中选择的,而不是从android的照片库中选择的。
所以我在选择图像时使用Uri并使用它来设置ImageView并且效果很好。
谢谢!
答案 1 :(得分:1)
使用以下代码,这对我来说非常合适
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Upload photo"),
RESULT_LOAD_IMAGE);
在'onActivityResult'中编写以下代码
protected void onActivityResult(final int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
&& null != data) {
Uri selectedImage = data.getData();
imageView.setImageURI(selectedImage);
} else
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}