Android 7.0调用相机拍照并获取图片路径

参考内容来源于《第二行代码》(第二版)

按钮点击事件

  	private Uri photoUri;   //相机拍照返回图片路径
    private Uri uri;
    private File outputImage;
    private int REQUEST_CODE_TAKE_PICTURE = 0;

 tv_camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建file对象,用于存储拍照后的图片,这也是拍照成功后的照片路径
                outputImage = new File(getExternalCacheDir(),"output_image.jpg");
                try {
                    //判断文件是否存在,存在删除,不存在创建
                    if (outputImage.exists()){
                        outputImage.delete();
                    }
                    outputImage.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //判断当前Android版本
                if(Build.VERSION.SDK_INT>=24){
                     photoUri=FileProvider.getUriForFile(MainActivity.this,"com.example.mania.weiyi.FileProvider",outputImage);
                }else {
                    photoUri = Uri.fromFile(outputImage);
                }
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);
                startActivityForResult(intent,REQUEST_CODE_TAKE_PICTURE);

//成功后在onActivityResult里面回调
 protected void onActivityResult(final int requestCode, final int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                //拍照返回
                case REQUEST_CODE_TAKE_PICTURE:
                	//这就是拍照成功后的图片的路径,因为刚开始我们创建了这个图片的路径
                    uri= Uri.fromFile(outputImage);
                    //也可以转换成Bitmap
                    Bitmap bitmap = BitmpFactory.decodeStream(getContentResolver().openInputStream(photoUri));
                    break;
                    }
                }
           }

完成以上部分后,需要在清单文件中,添加内容提供者

 
            
        

rc_file_path.xml文件代码


     //.代表任意目录

然后写上权限

 

你可能感兴趣的:(Android)