拍攝圖片或選擇圖片得到原圖地址

調用方法
/**
 * 選擇圖片
 */
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轉換

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。java

相關文章
相關標籤/搜索