Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android开放式摄像机权限拒绝_Android - Fatal编程技术网

Android开放式摄像机权限拒绝

Android开放式摄像机权限拒绝,android,Android,我想在单击对话框中的某个项目时打开相机,但出现如下错误。我一直在向manifest.xml添加摄像头权限 java.lang.SecurityException:权限拒绝:从ProcessRecord{b42fcde 29884:ukmutilizer.project.com.ukm_utilizer/u0a273}(pid=29884,uid=10273)启动意图{act=android.media.action.IMAGE_CAPTURE cmp=com.sonyericsson.andro

我想在单击对话框中的某个项目时打开相机,但出现如下错误。我一直在向
manifest.xml
添加摄像头权限

java.lang.SecurityException:权限拒绝:从ProcessRecord{b42fcde 29884:ukmutilizer.project.com.ukm_utilizer/u0a273}(pid=29884,uid=10273)启动意图{act=android.media.action.IMAGE_CAPTURE cmp=com.sonyericsson.android.camera/.MultiWindowActivity},并撤销权限android.Permission.camera

这是我的职责

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.personal_data_step, container, false);
    ButterKnife.bind(this, view);

    imageEktp.setClickable(true);

    imageEktp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Log.d("test : ", "testing");
            CharSequence menu[] = new CharSequence[]{"Take From Galery", "Open Camera"};
            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            builder.setTitle("Pick a Picture");
            builder.setItems(menu, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if(i == 0){
                        Toast.makeText(getActivity(), "galery", Toast.LENGTH_SHORT).show();
                    }else{
                        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                        startActivity(intent);
                    }
                }
            });
            builder.show();
        }
    });

    return view;
}

确保向用户请求运行时
摄像机权限

private static final int CAMERA_REQUEST_CODE = 100;
如果未授予,请请求许可

if (checkSelfPermission(Manifest.permission.CAMERA)
                        != PackageManager.PERMISSION_GRANTED) {
       requestPermissions(new String[]{Manifest.permission.CAMERA},
                            CAMERA_REQUEST_CODE);
}
在onRequestPermissionsResult中执行
操作

@Override

    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == CAMERA_REQUEST_CODE) {

            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                Toast.makeText(this, "Camera permission granted.", Toast.LENGTH_LONG).show();

               // Do stuff here for Action Image Capture.

            } else {

                Toast.makeText(this, "Camera permission denied.", Toast.LENGTH_LONG).show();

            }

        }
    }

这也应该在
清单中声明。

您必须获得运行时权限,然后才能访问您的相机

明显地

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

用户必须确认权限请求。
试一试


当您在6.0以上版本中运行应用程序时,如棉花糖设备,则需要权限,否则无需权限。 那时候你的代码可以工作了

如果运行棉花糖设备的时候需要许可,那么就做下面的代码

private void alertDialog(){
    CharSequence menu[] = new CharSequence[]{"Take From Galery", "Open Camera"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a Picture");
    builder.setItems(menu, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            if(i == 0){
                Toast.makeText(getApplicationContext(), "galery", Toast.LENGTH_SHORT).show();
            }else{
                Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                startActivity(intent);
            }
        }
    });
    builder.show();

}
然后上面的方法放入权限代码,如下所示

if (ContextCompat.checkSelfPermission(webView.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(webView.this, Manifest.permission.CAMERA)) {

                    alertDialog();
                }
                else{
                    ActivityCompat.requestPermissions(webView.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
                }
            }
将两个权限添加到清单文件中

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

你有什么版本的安卓?你给相机运行时的权限吗?可能的副本请接受答案,如果它解决了你的问题。因此,未来用户可以立即使用此解决方案!!
if (ContextCompat.checkSelfPermission(webView.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(webView.this, Manifest.permission.CAMERA)) {

                    alertDialog();
                }
                else{
                    ActivityCompat.requestPermissions(webView.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
                }
            }
    <uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
if (ContextCompat.checkSelfPermission(webView.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(webView.this, Manifest.permission.CAMERA)) {

                    alertDialog();
                }
                else{
                    ActivityCompat.requestPermissions(webView.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
                }
            }