下面是针对于7.0及以上的系统,对于7.0系统谷歌官方对于文件的访问权限做了更为严格的要求,需要使用FileProvider,Android的从 N 开始不允许以file://的方式通过Intent在两个App之间分享文件,的取而代之的英文通过FileProvider生成content://Uri 。如果在Android N 以上的版本继续使用file://方式分享文件,则系统会直接抛出异常,导致App出现 Crash,使用系统自带的intent来实现拍照,相册选择图片后剪切功能时,会遇到返回崩溃的问题。关于FileProvider网上示例很多,也可以参考官方文档原因是设置如下属性时,intent.putExtra("return-data", true);  通过Intent中的data来传递,当数据过大,即超过1M(经测试,这个数值在不同手机还不一样)时就崩了!!!!

imageCropUri = getUri();

private Uri getUri() {
    File tmpDir = new File(Environment.getExternalStorageDirectory() + "/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(), “接口地址”);
        }
    }

/**
 * 剪裁图片
 * @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);
}

解决Android部分手机图片剪切返回崩溃问题相关推荐

  1. 图片剪切空指针崩溃问题在Android 6.0系统出现

    软件在上传头像的时候有个图片剪切功能,本来一直没有问题的,后来公司有个同事买了部nexus手机,运行后发现图片剪切后崩溃,后来发现问题并解决 在这里记录一下 public static Bitmap ...

  2. Android 6.0系统中图片剪切空指针崩溃问题解决纪录

    软件在上传头像的时候有个图片剪切功能,本来一直没有问题的,后来公司有个同事买了部nexus手机,运行后发现图片剪切后崩溃,后来发现问题并解决 在这里记录一下 public static Bitmap ...

  3. android上传图片被旋转,解决android有的手机拍照后上传图片被旋转的问题

    需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的 ...

  4. android背景图拉伸,解决android:background背景图片被拉伸问题

    解决android:background背景图片被拉伸问题 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而s ...

  5. 解决H5 IOS手机图片上传时图片会旋转90°问题

    解决H5 IOS手机图片上传时图片会旋转90°问题 Vant 官方给出的解答需要自己解决,没有处理. 解决办法主要使用了 compressorjs 插件库 一.Vant UI库Uploader 组件图 ...

  6. Android之给图片去色,返回灰度图片以及ColorMatrix中setSaturation方法的用法

    原图: 效果图: 实现以上效果其实很简单,直接上代码: public class MainActivity extends Activity {private Button btn_start;pri ...

  7. 为什么手机上传图片这么慢 前端_解决BootStrap Fileinput手机图片上传显示旋转问题_心病_前端开发者...

    最近因为项目需要用到了bootstrap fileinput的插件,在使用苹果手机上传图片预览时,发现图片方向和手机本地存储方向不一致问题.后来通过查询资料了解图片具有EXIF(Exchangeabl ...

  8. 解决android有的手机拍照后上传图片被旋转的问题

    需求:做仿新浪发微博的项目,能够上传图片还有两外一个项目用到手机拍摄图片,这两个都需要把图片上传到服务器 遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的 ...

  9. android 上传头像遇到的问题,Android 7.0 图片剪切问题,选择头像上传

    一. 7.0文件地址传输的问题 异常信息:FileUriExposedException: android:name="android.support.v4.content.FileProv ...

  10. 最新android 8手机图片,手机QQ 8.2.8更新:图片文字提取更轻松

    原标题:手机QQ 8.2.8更新:图片文字提取更轻松 今天,腾讯QQ Android.iPhone手机版迎来同时升级到8.2.8正式版,更新内容都颇为丰富,也非常实用. 尤其是备受好评的图片文字提取功 ...

最新文章

  1. Kubernetes 1.9 发布
  2. ubuntu copy命令
  3. CRM_OPPORT_TEXT_DETER_STANDARD
  4. 客户端与服务器端地址的区别
  5. 2010软考软件设计师冲刺精选【专家压轴模拟•下】
  6. e_msg_c_gs_enter_gs_req
  7. 法拉第未来:投资者声明中存在不一致之处 贾跃亭降薪
  8. 用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)
  9. 碧蓝航线频道和服务器所在的文件夹,碧蓝航线如何反和谐 反和谐方法
  10. 技术团队如何进行绩效考核?阿里、腾讯、华为这样做
  11. Mac Excel 次坐标轴/双坐标轴/柱状图+折线图
  12. stm32F407hal+AD9854dds配置+源程序
  13. 【(类似DP)优化】 分梨子
  14. dCas9-ROS1——靶向去甲基化的捷径
  15. 响铃:718 Apple产品京东超级品牌日,如何反映互联网营销大趋势?
  16. 从一个技术人员角度来谈谈10000小时定律
  17. 瞎谈干净架构(clean architecture)
  18. 计算机在现代工作中的应用,浅论计算机在现代管理中应用
  19. C++ cout输出中文信息乱码问题解决
  20. quartus II工具In-System Memory Content Editor使用方法

热门文章

  1. 微信小程序例子——点击发送信息清空输入框
  2. 微信小程序里实现自定义日期控件
  3. 高阶常微分方程的求解
  4. echart 三维可视化地图_ECharts实现三维可视化
  5. 什么是视频分配器 编码器
  6. 【ionic】无法识别ionic
  7. python爬虫更改ip_怎么更改电脑ip地址?基于 Python 爬虫的ip修改设计与实现
  8. 手动制作解除U盘写保护文件
  9. store buffer and invalidate queues
  10. java程序员的待遇_想学java,一般的java程序员的薪资待遇是多少?