欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android圓形頭像拍照后“無法加載此圖片”的問題解決方法(適配Android7.0)

 更新時(shí)間:2017年10月07日 09:53:48   作者:Shengjie  
這篇文章主要介紹了Android圓形頭像拍照后“無法加載此圖片”的問題解決方法(適配Android7.0) ,需要的朋友可以參考下

Feature: 點(diǎn)擊選擇拍照或者打開相冊(cè),選取圖片進(jìn)行裁剪最后設(shè)置為圓形頭像。

Problem: 拍好照片,點(diǎn)擊裁剪,彈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;
  //跳轉(zhuǎn)相機(jī)
  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);
    }
    //啟動(dòng)相機(jī)程序
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    startActivityForResult(intent, CAMERA_REQUEST_CODE);
    dialog.dismiss();
  }
  //跳轉(zhuǎn)相冊(cè)
  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) {
        //相機(jī)數(shù)據(jù)
        case CAMERA_REQUEST_CODE:
          //tempFile = new File(Environment.getExternalStorageDirectory(), PHOTO_IMAGE_FILE_NAME);
          //startPhotoZoom(Uri.fromFile(tempFile));
          startPhotoZoom(imageUri);
          break;
        //相冊(cè)數(shù)據(jù)
        case IMAGE_REQUEST_CODE:
          startPhotoZoom(data.getData());
          break;
        case RESULT_REQUEST_CODE:
          //有可能點(diǎn)擊舍棄
          if (data != null) {
            //拿到圖片設(shè)置
            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);
    //圖片質(zhì)量
    intent.putExtra("outputX", 320);
    intent.putExtra("outputY", 320);
    //發(fā)送數(shù)據(jù)
    intent.putExtra("return-data", true);
    startActivityForResult(intent, RESULT_REQUEST_CODE);
  }
  //設(shè)置圖片
  private void setImageToView(Intent data) {
    Bundle bundle = data.getExtras();
    if (bundle != null) {
      Bitmap bitmap = bundle.getParcelable("data");
      profile_image.setImageBitmap(bitmap);
    }
  }

總結(jié)

以上所述是小編給大家介紹的Android圓形頭像拍照后“無法加載此圖片”的問題解決方法(適配Android7.0) ,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

最新評(píng)論