Android 7.0 提供新功能以提升性能、生产效率和安全性。通过新的系统行为测试您的应用,以节省电量和内存。充分利用多窗口 UI、直接回复通知等功能。
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,你的拍照代码升级了吗