适配安卓7.0系统相机拍照

Android 7.0 提供新功能以提升性能、生产效率和安全性。通过新的系统行为测试您的应用,以节省电量和内存。充分利用多窗口 UI直接回复通知等功能。

《适配安卓7.0系统相机拍照》 Android Nougat

Android 7.0 做了一些权限更改,当使用系统相机拍照时将受到影响;

传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。因此,尝试传递 file:// URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider

使用系统相机拍照并且保存全尺寸照片

使用方法可以参考官方文档 Save the Full-size Photo
** https://developer.android.google.cn/training/camera/photobasics.html#TaskPath **

遇到的问题

点击照片,进入系统相机应用点击拍摄,系统相机闪退了了了😅

java.lang.SecurityException:
Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord
解决办法
Uri photoURI = FileProvider.getUriForFile(activity,
    "com.example.android.fileprovider",
    photoFile);
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
    List<ResolveInfo> resInfoList = getPackageManager()
        .queryIntentActivities(takePictureIntent,
            PackageManager.MATCH_DEFAULT_ONLY);
    for (ResolveInfo resolveInfo : resInfoList) {
        String packageName = resolveInfo.activityInfo.packageName;
        grantUriPermission(packageName, photoURI,
            Intent.FLAG_GRANT_WRITE_URI_PERMISSION
                | Intent.FLAG_GRANT_READ_URI_PERMISSION);
    }
}
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, TAKE_PICTURE);
参考资料

Android 7.0 行为变更#权限更改
Android7.0适配教程,心得
How to use support FileProvider for sharing content to other apps?
FileProvider Not Working with Camera
Android7.0拍照失败FileUriExposedException,你的拍照代码升级了吗

    原文作者:Junzz丶
    原文地址: https://www.jianshu.com/p/0afb2272628f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞