/** * 選擇圖片 */ 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