Android Canceling Crop 不返回活动结果
Posted
技术标签:
【中文标题】Android Canceling Crop 不返回活动结果【英文标题】:Android Canceling Crop does not return activity result 【发布时间】:2013-05-26 02:06:30 【问题描述】:我可以从图库中挑选一张图片,将其裁剪并获取为bundle
。我以这种方式检索它:
if (resultCode == Activity.RESULT_OK)
if (requestCode == SELECT_IMAGE || requestCode == SELECT_LANDSCAPE_IMAGE)
Bundle extras = data.getExtras();
Bitmap photo = extras.getParcelable("data");
.........................
一切正常。但是当我取消裁剪时,没有收到任何捆绑包。当我取消裁剪时,我想收到实际的位图。我该怎么做?
【问题讨论】:
如果他们取消了,它可能不会返回 RESULT_OK。 【参考方案1】:我找到了解决办法:
if (requestCode == CROP_FROM_CAMERA && resultcode == RESULT_CANCELED
// crop was cancelled
【讨论】:
【参考方案2】:protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AppConstant.PICK_PROFILE_PIC)
// getActivity();
if (resultCode == Activity.RESULT_OK && data != null)
selectedImage = data.getData();
String[] filePathColumn = MediaStore.Images.Media.DATA;
Cursor cursor = getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
// some devices (OS versions return an URI of com.android
// instead of com.google.android
if (selectedImage.toString().startsWith(
"content://com.android.gallery3d.provider"))
// use the com.google provider, not the com.android
// provider.
selectedImage = Uri.parse(selectedImage.toString().replace(
"com.android.gallery3d",
"com.google.android.gallery3d"));
if (cursor != null)
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
if (selectedImage.toString().startsWith(
"content://com.google.android.gallery3d"))
columnIndex = cursor
.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
if (columnIndex != -1)
new GetBitmap(getApplicationContext(), selectedImage)
.execute();
else if (selectedImage.toString().startsWith(
"content://com.google.android.apps.photos.content"))
new GetBitmap(getApplicationContext(), selectedImage).execute();
else
cursor.moveToFirst();
mPicturePath = cursor.getString(columnIndex);
ImageUtils.rotateImage(getApplicationContext(), mPicturePath);
addGalleryImage(mPicturePath);
cursor.close();
performCrop();
else if (requestCode == AppConstant.CLICK_IMAGE)
File f = new File(Environment.getExternalStorageDirectory()
.toString());
for (File temp : f.listFiles())
if (temp.getName().equals(AppConstant.TEMP_IMAGE_NAME))
f = temp;
break;
mPicturePath = f.toString();
mBitmap = ImageUtils.rotateImage(this, mPicturePath);
ImageUtils.setBitmapToView(mBitmap, mProfilePic);
Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();
else if (requestCode == AppConstant.CROP_IMAGE && resultCode != RESULT_CANCELED)
// get the returned data
Bundle extras = data.getExtras();
// get the cropped bitmap
Bitmap thePic = extras.getParcelable("data");
// retrieve a reference to the ImageView
// display the returned cropped image
GraphicsUtil graphicUtil = new GraphicsUtil();
// picView.setImageBitmap(graphicUtil.getRoundedShape(thePic,(float)1.5,92));
mProfilePic.setImageBitmap(graphicUtil.getCircleBitmap(
thePic, 16));
Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();
else if (requestCode == AppConstant.CROP_IMAGE && resultCode == RESULT_CANCELED)
Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();
【讨论】:
以上是关于Android Canceling Crop 不返回活动结果的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Android 中使用 Android Crop 图像裁剪库
com.android.camera.action.CROP 在objective-c 中?
调用 android 系统拍照结合 android-crop 裁剪图片