我无法让我的ImageViews从URI或文件路径更新 - 他们只是不显示图像
意图捕获图像:
Intent photo = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photo, 1);
On ActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
Uri imageUri = data.getData();
filePath = getRealPathFromURI(this, imageUri);
}
GetRealPathFromURI类:
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();
}
}
}
然后将onActivityResult中的'filePath'插入到db
中从db检索并更新ImageViews
imgfilepath[y] = cursorc.getString(cursorc.getColumnIndex("IMAGE"));
imgFile[y] = new File(imgfilepath[y]);
Uri uri = Uri.fromFile(imgFile[y]);
String path = uri.getPath();
mImage.setImageURI(uri);
我尝试了很多不同的setImageBitmap等方法,但这些方法都没有用(我记不清了所有这些方法) - 有人能看出为什么没有显示图像吗?
图像位于模拟存储中,而不是SD卡。
编辑:
我添加了EXTRA_OUTPUT标签,但我无法在任何地方看到DDMS中的图像。拍照/接受图像后相机不会退出
Intent photo = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
final File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MyDir" + File.separator);
root.mkdirs();
final String fname = "img_"+ System.currentTimeMillis() + ".jpg";
final File sdImageMainDirectory = new File(root, fname);
mImageUri = Uri.fromFile(sdImageMainDirectory);
photo.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(photo, 1);
答案 0 :(得分:1)
Uri imageUri = data.getData();
ACTION_IMAGE_CAPTURE
不会返回Uri
。
图像位于模拟存储中
也许那个相机应用程序会在相应的情况下发现相机应用程序有错误,以及返回a - Uri
错误。
有数以千计的Android设备型号。这些产品预装了数百种不同的相机应用程序,还有数百种可从Play商店和其他地方获得。许多人将ACTION_IMAGE_CAPTURE
实施。大多数人应该遵循the documented protocol。没有人应该为您的请求保存图像,因为您没有告诉相机应用程序保存图像的位置。
或者:
通过EXTRA_OUTPUT
为相机应用提供保存图片的位置,然后从该位置加载图片,或
如果您未提供data.getExtra("data")
Bitmap
获取代表缩略图大小图片的EXTRA_OUTPUT