参考链接:
http://blog.csdn.net/hu5080126/article/details/53738625
http://www.jianshu.com/p/ba57444a7e69
在Android7.0以后,当app使用file:// url 共享给其他app时, 会抛出异常。
因为在android 6.0 + 权限需要 在运行时候检查, 其他app 可能没有读写文件的权限, 所以google在7.0的时候加上了这个限制。
官方推荐使用 FileProvider 解决这个问题。
1.打开相机拍照获取照片Uri,然后对图片进行压缩
2.打开相册获取选取的图片Uri,然后对图片进行压缩
打开相机和相册是不会触发任何权限问题的,如果你想获取相机或相册的图片中的Uri,即file://URI开头的Uri离开了相机或相册应用,就会触发7.0文件uri权限 FileUriExposedException
,会触发FileUriExposedException权限异常。
现在将代码贴下来:
private static final int NEED_CAMERA = 200; private static final int RESULT_PICK = 201;
/** * 从TakePhotoPopWin获取的onClickListener * 点击PopuWindow上的照相或者从相册中选取图片 功能1 */ private View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { //照相 case R.id.btn_take_photo: //检测是否有相机和读写文件权限 if (ContextCompat.checkSelfPermission(UIUtils.getContext(), Manifest.permission.CAMERA