当从图库中选择图像并为其制作裁剪时,它将被裁剪但我的主要问题是,当我选择谷歌照片时,它无法裁剪并显示Toast消息,例如"无法播放加载图片"。请帮助我在哪里做错了。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
{
Log.e("Came", "onActivityResult")
super.onActivityResult(requestCode, resultCode, data)
System.out.println("onActivityResulty===>" + data.toString() + "@@@@@" + resultCode + "#######" + requestCode)
if (requestCode == RESULT_LOAD_GALLERY_IMAGE && null != data) {
mImageCaptureUri = data.data
try {
cropImage(mImageCaptureUri, output_pic, "square")
} catch (e: IOException) {
e.printStackTrace()
} catch (e: OutOfMemoryError) {
e.printStackTrace()
}
} else if (requestCode == CAMERA_REQUEST) {
try {
cropImage(mImageCaptureUri, output_pic, "square")
} catch (e: Exception) {
e.printStackTrace()
} catch (e: OutOfMemoryError) {
e.printStackTrace()
System.out.println("OnActivity_Catch_Error===>" + e)
}
}else if (requestCode == 1890) {
croppingImage()
}}
https://www.android-examples.com/android-image-cropping-example-tutorial-pick-gallery-camera/
答案 0 :(得分:1)
这是因为从相机和图库中选择图像不会返回相同的结果,您必须通过查看意图来检查用户选择了哪一个;你可以这样做。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == mRequestCode) {
if (resultCode == Activity.RESULT_OK) {
boolean isCamera = true;
if (data != null && data.getData() != null) {
String action = data.getAction();
isCamera = MediaStore.ACTION_IMAGE_CAPTURE.equals(action);
}
try {
Uri uriFileSrc = isCamera ? mOutputFileUri : data.getData();
//Do what do you need with the Uri
} catch (Exception ex) {
Toast.makeText(mActivity, R.string.error_creating_file, Toast.LENGTH_SHORT).show();
}
}
}
}