Android7.0 拍照 选择照片 权限 实现

本文介绍了在Android 7.0及以上版本中,由于运行时权限和File URI安全性的改变导致的问题,以及如何通过使用FileProvider来解决相机拍照和相册选择图片后无法正常共享的异常。详细步骤包括打开相机和相册获取图片的Uri,并对图片进行压缩。参考了CSDN和简书上的相关文章,提供了具体的代码示例。
摘要由CSDN通过智能技术生成

参考链接:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值