AS打开照相机拍照保存本地、显示页面

打开相机

1、权限
6.0之后修改动态获取权限
打开照相机的权限

<uses-permission android:name="android.permission.CAMERA"/>

读写SD卡权限(保存本地、显示页面)

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2、动态获取权限
Build.VERSION_CODES.M == 23,23以上为6.0以上版本,动态获取图片

if (Build.VERSION_CODES.M <= Build.VERSION.SDK_INT){
            requestPermissions(new String[]{
                    "android.permission.CAMERA",
                    "android.permission.READ_EXTERNAL_STORAGE",
                    "android.permission.WRITE_EXTERNAL_STORAGE"
            },100);
        }

3、打开照相机,拍照并保存本地

		//MediaStore.ACTION_IMAGE_CAPTURE  打开照相机(拍照)
		//MediaStore.ACTION_VIDEO_CAPTURE  打开摄像机(录制视频)
		Intent intent = new Intent();
        intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
        //保存照片
        Uri uri = FileProvider.getUriForFile(getContext(), "com.bawei.day01_mvp", new File(path));
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
		//回调 更换图片
        startActivityForResult(intent, 102);

4、配置清单文件

<provider
			//参数  包名
            android:authorities="com.bawei.day01_mvp"
            //参数  FileProvider导包路径
            android:name="androidx.core.content.FileProvider"
            android:grantUriPermissions="true">
            //下图讲解
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
            //配置path文件
                android:resource="@xml/path"></meta-data>
        </provider>

android:name=“android.support.FILE_PROVIDER_PATHS”
怎么找?
androidx.core.content.FileProvider Ctrl+鼠标点进类里面找下面的这句代码
copy大法

  private static final String
            META_DATA_FILE_PROVIDER_PATHS = "android.support.FILE_PROVIDER_PATHS";

5、配置path文件

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path
        name="mypath"
        //path 为根路径信息
        path="DCIM"/>
</paths>

6、保存本地之后更换UI图片

 @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 102 && resultCode == Activity.RESULT_OK) {
            //回调展示到页面
            ShowImageUtils.getInstance().showImage(getContext(), path, R.drawable.ic_launcher_background, ivImage);
        }
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值