Android 出了7.0版本相机需要添加一些权限,6.0需要自己动态添加权限可是到7.0就还是报权限的错误
1.首先在Manifest文件里添加
然后在res下新建一个目录
下面在代码中实现我这里也写了调用相册的方法。
首先在这里用 startActivityForResult 做的跳转
private void getPicFrom(int type) { switch (type) { //相机 case CAPTURE_IMAGE_CAMERA: // 拍照 //设置图片的保存路径,作为全局变量 imageFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/filename.jpg"; File temp = new File(imageFilePath); Uri imageFileUri = FileProvider.getUriForFile(this, "com.sjd.conch.fileprovider", temp);//获取文件的Uri Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//跳转到相机Activity it.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); it.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);//告诉相机拍摄完毕输出图片到指定的Uri startActivityForResult(it, 102); break; //相册 case IMAGE_STORE: Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent1, 103); break; } }实现 onActivityResult 实现这个方法,在这里面判断是拍照还是相册。
@RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 102: //拍照 if (resultCode == Activity.RESULT_OK) { Bitmap bmp = BitmapFactory.decodeFile(imageFilePath); mImgYhjt.setImageBitmap(bmp); picPathUrl = imageFilePath; } break; case 103: //相册 String path = UIUtils.getPath(this, data.getData()); if (null != path) { File file = new File(path); mImgYhjt.setImageURI(UIUtils.getUriFromFile(BJYouHuiJuan_Activity.this, file)); picPathUrl = path; } break; } super.onActivityResult(requestCode, resultCode, data); }
这样7.0的相机就可以使用,写的不好希望大家多多指点!!!