使用系统自带的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);}
新闻热点
疑难解答