Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)
Feature:点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。
Problem:拍好照片,点击裁剪,弹Toast“无法加载此图片”。
Solution:在裁剪的class里加两行代码
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
主要代码如下:
publicstaticfinalStringPHOTO_IMAGE_FILE_NAME="fileImg.jpg"; publicstaticfinalintCAMERA_REQUEST_CODE=100; publicstaticfinalintIMAGE_REQUEST_CODE=101; publicstaticfinalintRESULT_REQUEST_CODE=102; privateFiletempFile=null; privateUriimageUri; //跳转相机 privatevoidtoCamera(){ FileoutputImage=newFile(getActivity().getExternalCacheDir(), PHOTO_IMAGE_FILE_NAME); try{ if(outputImage.exists()){ outputImage.delete(); } outputImage.createNewFile(); }catch(IOExceptione){ e.printStackTrace(); } if(Build.VERSION.SDK_INT>=24){ imageUri=FileProvider.getUriForFile(getActivity(), "com.liushengjie.smartbutler.fileprovider",outputImage); }else{ imageUri=Uri.fromFile(outputImage); } //启动相机程序 Intentintent=newIntent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,CAMERA_REQUEST_CODE); dialog.dismiss(); } //跳转相册 privatevoidtoPicture(){ Intentintent=newIntent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent,IMAGE_REQUEST_CODE); dialog.dismiss(); } @Override publicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ if(resultCode!=getActivity().RESULT_CANCELED){ switch(requestCode){ //相机数据 caseCAMERA_REQUEST_CODE: //tempFile=newFile(Environment.getExternalStorageDirectory(),PHOTO_IMAGE_FILE_NAME); //startPhotoZoom(Uri.fromFile(tempFile)); startPhotoZoom(imageUri); break; //相册数据 caseIMAGE_REQUEST_CODE: startPhotoZoom(data.getData()); break; caseRESULT_REQUEST_CODE: //有可能点击舍弃 if(data!=null){ //拿到图片设置 setImageToView(data); //删除原来的图片 if(tempFile!=null){ tempFile.delete(); } } break; } } } //裁剪 privatevoidstartPhotoZoom(Uriuri){ if(uri==null){ L.e("uri==null"); return; } Intentintent=newIntent("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); } //设置图片 privatevoidsetImageToView(Intentdata){ Bundlebundle=data.getExtras(); if(bundle!=null){ Bitmapbitmap=bundle.getParcelable("data"); profile_image.setImageBitmap(bitmap); } }
总结
以上所述是小编给大家介绍的Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!