美文网首页我的收藏Android知识Android开发
android 拍照、相册选取,适配7.0

android 拍照、相册选取,适配7.0

作者: 白色相簿 | 来源:发表于2017-04-07 11:55 被阅读402次

    android拍照、相册选取的方法,权限获取用的RxPermissions

    拍照

    private Uri outputFileUri; //返回文件uri
    
    public void camera() {
            if (SdkVersionUtils.hasMarshmallow()) { //6.0
                rxPermissions
                        .request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE) //相机、外部存储卡权限
                        .subscribe(granted -> {
                            if (granted) { // Always true pre-M
                                if (SdkVersionUtils.hasN()) { //7.0 获取uri
                                    mFile = FileUtils.createImageFile();
                                    ContentValues contentValues = new ContentValues(1);
                                    contentValues.put(MediaStore.Images.Media.DATA, mFile.getAbsolutePath());
                                    outputFileUri = getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
                                } else {
                                    mFile = FileUtils.createImageFile();
                                    outputFileUri = Uri.fromFile(mFile);
                                }
                                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                                if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                                    startActivityForResult(intent, Constant.TAKE_PHOTO);
                                }
                            } else if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
                                ToastUtils.showShortToast(getContext(),"已拒绝权限");
                                FileUtils.deleteFile(mFile);
                            } else {
                                ToastUtils.showShortToast(getContext(),"获取权限失败,需去系统设置中打开");
                                FileUtils.deleteFile(mFile);
                            }
                        });
            } else {
                mFile = FileUtils.createImageFile();
                outputFileUri = Uri.fromFile(mFile);
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                    startActivityForResult(intent, Constant.TAKE_PHOTO);
                }
            }
        }
    

    相册

     public void album() {
            if (SdkVersionUtils.hasMarshmallow()) {
                rxPermissions
                        .request(Manifest.permission.READ_EXTERNAL_STORAGE)
                        .subscribe(granted -> {
                            if (granted) {
                                Intent intent = new Intent();
                                intent.setType("image/*");
                                intent.setAction(Intent.ACTION_GET_CONTENT);
                                startActivityForResult(intent, Constant.IMPORT_IMG);
                            } else if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
                                ToastUtils.showShortToast(mContext, "已拒绝读取外部存储卡权限");
                            } else {
                                ToastUtils.showShortToast(mContext, "获取外部存储卡权限失败,需去系统设置中打开");
                            }
                        });
            } else {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent, Constant.IMPORT_IMG);
            }
        }
    

    相关文章

      网友评论

        本文标题:android 拍照、相册选取,适配7.0

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