zoukankan      html  css  js  c++  java
  • Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    正常情况下调用系统相机拍照: 
    如果拍照后点击的是“确定”图标,返回的resultCode = -1(Activity.RESULT_OK); 
    如果点击的是底部的“返回”键,返回的resultCode = 0(Activity.RESULT_CANCELED)。

    简单的调用系统相机的写法:

    //调用系统拍照
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    String photofileName = "IMG_" + new Date() + ".jpg";
    String imgUrl = Environment.getExternalStorageDirectory() + File.separator + "tempWhy"+ File.separator + photofileName;//必须使用已经存在的文件夹tempWhy
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imgUrl)));
    //启动拍照的窗体。并注册 回调处理
    startActivityForResult(intent, 1111);

    返回时的处理

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
                //拍照功能
                case 1111:
                    break;
            }
        }
    }

    那么,今天碰到的在Android6.0机型上出现的调用系统相机拍照返回的resultCode的值始终等于0的问题,主要是由于以下两方面原因导致到:

    一、没有实现运行时权限的处理 
    当AndroidManifest.xml文件中的Android:targetSdkVersion值大于等于23的时候,此时必须要实现运行时权限的处理,因为向SD卡读写文件的权限——android.permission.WRITE_SETTINGS属于运行时权限。 
    解决方案: 
    方案一:将AndroidManifest.xml文件中的android:targetSdkVersion值修改为小于23 
    方案二:添加运行时权限的处理

    二、当指定拍照图片保存路径的时候,存储目录(文件夹)未创建 
    解决方案:

    调用系统相机拍照之前先创建存储目录

  • 相关阅读:
    PKU 1185-炮兵阵地(状压DP)
    pku1113-Wall 凸包(安德鲁算法版)
    PTA 6-15 用单向循环链表实现猴子选大王 (20 分)
    PTA 6-14 用单向链表完成多项式运算(35分)
    离散化
    Warshall算法求传递闭包及具体实现
    HDU-6185-Covering(推递推式+矩阵快速幂)
    链式前向星
    HDU Queuing(递推+矩阵快速幂)
    【node】------mongoose的基本使用------【巷子】
  • 原文地址:https://www.cnblogs.com/whycxb/p/6818222.html
Copyright © 2011-2022 走看看