
Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。
Problem: 拍好照片,点击裁剪,dToast“无法加载此图片”。
Solution: 在裁剪的class里加两行代码
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
主要代码如下:
public static final String PHOTO_IMAGE_file_name = "fileimg.jpg"; public static final int CAMERA_REQUEST_CODE = 100; public static final int IMAGE_REQUEST_CODE = 101; public static final int RESulT_REQUEST_CODE = 102; private file tempfile = null; private Uri imageUri; //跳转相机 private voID toCamera() { file outputimage = new file(getActivity().getExternalCacheDir(),PHOTO_IMAGE_file_name); try { if (outputimage.exists()) { outputimage.delete(); } outputimage.createNewfile(); } catch (IOException e) { e.printstacktrace(); } if (Build.VERSION.SDK_INT >= 24) { imageUri = fileProvIDer.getUriForfile(getActivity(),"com.liushengjIE.smartbutler.fileprovIDer",outputimage); } else { imageUri = Uri.fromfile(outputimage); } //启动相机程序 Intent intent = new Intent("androID.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,CAMERA_REQUEST_CODE); dialog.dismiss(); } //跳转相册 private voID topicture() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent,IMAGE_REQUEST_CODE); dialog.dismiss(); } @OverrIDe public voID onActivityResult(int requestCode,int resultCode,Intent data) { if (resultCode != getActivity().RESulT_CANCELED) { switch (requestCode) { //相机数据 case CAMERA_REQUEST_CODE: //tempfile = new file(Environment.getExternalStorageDirectory(),PHOTO_IMAGE_file_name); //startPhotoZoom(Uri.fromfile(tempfile)); startPhotoZoom(imageUri); break; //相册数据 case IMAGE_REQUEST_CODE: startPhotoZoom(data.getData()); break; case RESulT_REQUEST_CODE: //有可能点击舍弃 if (data != null) { //拿到图片设置 setimageToVIEw(data); //删除原来的图片 if (tempfile != null) { tempfile.delete(); } } break; } } } //裁剪 private voID startPhotoZoom(Uri uri) { if (uri == null) { L.e("uri == null"); return; } Intent intent = new Intent("com.androID.camera.action.CROP"); intent.setDataAndType(uri,"image/*"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); //裁剪 intent.putExtra("crop",true); //宽高比例 intent.putExtra("aspectX",1); intent.putExtra("aspectY",1); //图片质量 intent.putExtra("outputX",320); intent.putExtra("outputY",320); //发送数据 intent.putExtra("return-data",true); startActivityForResult(intent,RESulT_REQUEST_CODE); } //设置图片 private voID setimageToVIEw(Intent data) { Bundle bundle = data.getExtras(); if (bundle != null) { Bitmap bitmap = bundle.getParcelable("data"); profile_image.setimageBitmap(bitmap); } }总结
以上所述是小编给大家介绍的AndroID圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0) ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
总结以上是内存溢出为你收集整理的Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)全部内容,希望文章能够帮你解决Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)