美文网首页
适配Android N相机拍照的填坑小纪

适配Android N相机拍照的填坑小纪

作者: 狼行天下EGO | 来源:发表于2017-05-09 15:26 被阅读0次

    初识FileProvider在Android N上的应用

          早些时候浏览一些文章时,了解到Android从N开始不允许以file://的方式通过Intent在两个APP之间分享文件,而是通过FileProvider生成content://Uri。这就意味着如果在Android N以上的版本继续使用file://的方式分享文件,则系统会抛出异常。就个人而言,file://这种方式使用最多的就是调用系统相机拍摄照片的时候了,立马找到一部Android N以上的手机,果然以前的demo无法完成拍照。于是乎,捣鼓起来,解决掉这个问题。

    跳坑过程不多说,直接上可行方案

    1、定义一个FileProvider,并指定有效的文件

           在AndroidManifest.xml文件中配置<provider>元素并提供相应的属性

    定义一个FileProvider

           在/res/xml下新建provider_paths.xml文件

    为FileProvider指定有效的文件

    2、修改拍照部分的代码

    兼容Android N的拍照方案

    回首折磨过自己的大坑们

    1、provider_paths.xml文件中未配置root-path

          provider_paths.xml文件中未配置root-path,老是导致拍照功能在android N上无法实现,折腾了半天百思不得解,通过看日志这个小举措才发现应该配置root-path,否则抛出异常。

    2、Intent.FLAG_ACTIVITY_NEW_TASK导致result_code始终为0

        调用系统相机前设置了intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),导致在activity里的onActivityResult()方法中的result_code始终为0,以致于拍摄的照片无法显示、处理。起初老是寻找result_code=0点多种原因,无果后还曾以为个别手机的问题,就当快无招的时候发现是Intent.FLAG_ACTIVITY_NEW_TASK的问题,去除就好了。

    相关文章

      网友评论

          本文标题:适配Android N相机拍照的填坑小纪

          本文链接:https://www.haomeiwen.com/subject/ikqkdttx.html