全站工程师 教你 解决Android 7.0以后 系统相机拍照裁剪问题

本文介绍了Android从7.0版本开始,由于安全机制的加强,导致调用系统相机拍照及裁剪时遇到的问题及解决方法。主要变化在于URI的使用,7.0之前与之后的差异较大,需要在XML中配置路径,清单文件添加内容提供者,并确保路径和授权的一致性。
摘要由CSDN通过智能技术生成

andorid 基于7.0 之前 和 7.0 之后 调用系统相机 拍照及裁剪

Android 随着版本迭代,安全机制愈发加强,6.0 开始动态权限,7.0开始对于一些系统函数的调用要求也加强,本篇文章主要讲解 相机 及 裁剪 差异 及使用

URI 变化

7.0 之前使用系统相机

/* 拍照*/
public static void tabkePhoto(Activity activity, int code, Uri uri) {
   
    //利用隐式Intent 打开系统相机 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    activity.startActivityForResult(intent, code);//这里的TAKE_PHOTO是定义的一个静态常数变量
}

7.0 之后
//配置 xml

在这里插入图片描述

//xml 内容

<?xml version="1.0" encoding="utf-8"?>
<paths>
   
    <!-- path设置为'.'时代表整个存储卡 Environment.getExternalStorageDirectory() + "/path/"   -->
    <external-path
        name="external_path"
        path="etchotline/" />

    <external-path
        name="my_images"
        path="Pictures" />

    <external-path
        name="external_storage_root"
        path="." />
    <external-path
        name="crop_img"
        path="crop" />
    <external-path
        name="external_storage_root"
        path="Pictures" />
    <files-path
        name="internal_storage_file"
        path="etchotline/" />
    <files-path
        name="files-path"
        path="." />
    <!--配置root-path。这样子可以读取到sd卡和一些应用分身的目录,否则微信分身保存的图片,就会导致 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/999/tencent/MicroMsg/WeiXin/export1544062754693.jpg-->
    <root-path
        name=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值