当前位置: 首页 > 编程笔记 >

Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)

许马鲁
2023-03-14
本文向大家介绍Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0),包括了Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)的使用技巧和注意事项,需要的朋友参考一下

Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。

Problem: 拍好照片,点击裁剪,弹Toast“无法加载此图片”。

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适配利用webview加载后图片显示过大的问题解决,包括了Android适配利用webview加载后图片显示过大的问题解决的使用技巧和注意事项,需要的朋友参考一下 前言 最近在开发过程中,需要用webview控件来展示文章的详情页面,流程是通过请求后台数据,然后用控件加载,而后台返回的文章详情页面是直接网页端使用的,并没有对移动端进行适配,导致webview加载后文章详

  • 本文向大家介绍解决android有的手机拍照后上传图片被旋转的问题,包括了解决android有的手机拍照后上传图片被旋转的问题的使用技巧和注意事项,需要的朋友参考一下 需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的是正的,这样问题就来了,不能用户

  • 本文向大家介绍Android 开发手机(三星)拍照应用照片旋转问题解决办法,包括了Android 开发手机(三星)拍照应用照片旋转问题解决办法的使用技巧和注意事项,需要的朋友参考一下 Android 开发手机(三星)拍照应用照片旋转问题解决办法 最近解决了一个令我头疼好久的问题,就是三星手机拍照图片旋转的问题,项目中有上传图片的功能,那么涉及到拍照,从相册中选择图片,别的手机都ok没有问题,唯独三

  • 我一直在开发一个摄像头应用程序,所有的工作都是拍摄和保存照片。但我希望在拍摄照片时显示的Imageview能够保存在实际拍摄的照片中。可能吗? 现在,我一直试图让图像视图与我绘制相机预览的布局相同。 我想,也许如果它画在与相机相同的视图上,那么它也会看到图像和照片。 有没有人知道这是否可能,或者我必须采取另一种方法?如果是这样,链接到其他解决方案如何做到这一点将不胜感激:) 谢谢 编辑:我一直遵循

  • 本文向大家介绍PHP Redis扩展无法加载的问题解决方法,包括了PHP Redis扩展无法加载的问题解决方法的使用技巧和注意事项,需要的朋友参考一下 最近在工作中需要使用PHP访问Redis,从https://github.com/phpredis/phpredis下载了phpredis,并且按照官方的说明进行了安装 但是在重启php-fpm的过程中,发生了如下的错误,redis.so无法载入

  • 本文向大家介绍Android 系统相机拍照后相片无法在相册中显示解决办法,包括了Android 系统相机拍照后相片无法在相册中显示解决办法的使用技巧和注意事项,需要的朋友参考一下 Android 系统相机拍照后相片无法在相册中显示解决办法 目前自己使用发送广播实现了效果  解决方法: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!