首页 > 系统 > Android > 正文

解决Android部分手机图片剪切返回崩溃问题

2019-11-06 09:41:12
字体:
来源:转载
供稿:网友

使用系统自带的intent来实现拍照,相册选择图片后剪切功能时,会遇到返回崩溃的问题。

原因是设置如下属性时,

intent.putExtra("return-data", true);

通过Intent中的data来传递,当数据过大,即超过1M(经测试,这个数值在不同手机还不一样)时就崩了!!!!

imageCropUri = getUri();
PRivate Uri getUri() {    File tmpDir = new File(Environment.getExternalStorageDirectory() + "/yrhksd/image/");    if (!tmpDir.exists()) {        tmpDir.mkdirs();    }    File img = new File(tmpDir.getAbsolutePath() + "/pic.jpeg");    if (img.exists()) {        img.delete();    }    return Uri.fromFile(img);}
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");

startActivityForResult(intent, GALLERY_REQUEST_CODE);

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == GALLERY_REQUEST_CODE && resultCode == RESULT_OK) {            if (data == null) {//相册                return;            }            Uri urifile = data.getData();//            Uri curi = convertUri(urifile);//            startImageZoom(curi);            startImageZoom(urifile);        }else if (requestCode == CROP_REQUEST_CODE && resultCode == RESULT_OK) {            if (data == null) {                return;            }//            //剪裁后的图片//            Bundle extras = data.getExtras();//            if (extras == null) {//                return;//            }//            Bitmap bm = extras.getParcelable("data");//            Uri uri = saveBitmap(bm);//            setImageToView(data);            onStarted();            presenter.modifyAvatar(imageCropUri.getEncodedPath(), Constants.Host + "/member/upload");        }    }

/** * 剪裁图片 * @param uri */private void startImageZoom(Uri uri) {    Intent intent = new Intent("com.android.camera.action.CROP");    intent.setDataAndType(uri, "image/*");    intent.putExtra("crop", "true");    intent.putExtra("aspectX", 1);    intent.putExtra("aspectY", 1);    intent.putExtra("outputX", 300);    intent.putExtra("outputY", 300);    intent.putExtra("scale", true);    intent.putExtra("return-data", false);    intent.putExtra("noFaceDetection",true);    //裁剪之后,保存在裁剪文件中,关键    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageCropUri);    intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());    startActivityForResult(intent, CROP_REQUEST_CODE);}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表