拍摄图片或选择图片获得原图地址

调用方法
/**
 * 选择图片
 */
private void selectPhoto(final int resultCode) {
	new AlertDialog.//
	Builder(context).//
			setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_dropdown_item_1line, android.R.id.text1, //
					new String[] { "拍摄照片", "选择图片" }), //
					new DialogInterface.OnClickListener() {
						@Override
						public void onClick(DialogInterface dialog, int which) {
							switch (which) {
							case 0:
								// 拍照
								// 执行拍照前,应该先判断SD卡是否存在
								String SDState = Environment.getExternalStorageState();
								if (SDState.equals(Environment.MEDIA_MOUNTED)) {
									Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
									/***
									 * 需要说明一下,以下操作使用照相机拍照,拍照后的图片会存放在相册中的
									 * 这里使用的这种方式有一个好处就是获取的图片是拍照后的原图
									 * 如果不实用ContentValues存放照片路径的话
									 * ,拍照后获取的图片为缩略图不清晰
									 */
									photoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
									intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, photoUri);
									startActivityForResult(intent, resultCode);
								} else {
									Toast.makeText(MainActivity.this, "内存卡不存在", Toast.LENGTH_LONG).show();
								}
								break;
							case 1:
								// 选择图库
								Intent intent = new Intent();
								intent.setType("image/*");
								intent.setAction(Intent.ACTION_GET_CONTENT);
								intent.addCategory(Intent.CATEGORY_OPENABLE);
								startActivityForResult(intent, resultCode);
								break;
							}
						}
					}).show();
}

接受方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
	String filePath = "";
	if ((requestCode == REQUEST_UPLOAD_PHOTO && resultCode == RESULT_OK) {//REQUEST_UPLOAD_PHOTO就是调用方法的resultCode
		if (data == null || data.getData() == null) {
			showToastShort("选择图片文件出错");
		} else {
			photoUri = data.getData();
			filePath = CommUtil.getImageAbsolutePath(this, photoUri);
		}
		filePath = CommUtil.getImageAbsolutePath(this, photoUri);//获得图片绝对路径
		if (StringUtil.isNotTrimBlank(filePath)) {
			switch (requestCode) {
			case REQUEST_UPLOAD_AVATAR:
				//操作对应方法。
				break;
			}
		} else {
			showToastShort("选择图片不存在");
		}
	}
}
关于获得图片绝对路径这篇有说明: 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换

你可能感兴趣的:(拍摄图片或选择图片获得原图地址)