/** * 选择图片 */ 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