Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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
Java 如何为片段中的摄影机授予权限_Java_Android - Fatal编程技术网

Java 如何为片段中的摄影机授予权限

Java 如何为片段中的摄影机授予权限,java,android,Java,Android,您好,我有一个简单的应用程序,我正在使用相机,所以用户必须为相机授予权限 到目前为止,我的应用程序只有活动,但现在我想使用片段。 我得到了一个片段,叫做FragmentScanCode(这里我想用相机) 这也是第一个片段,所以我想在应用程序开始时授予权限 这是我的代码,来自MainActivity,它工作正常 final int RequestCameraPermissionID = 1001; onRequestPermissionsResult: @Override pub

您好,我有一个简单的应用程序,我正在使用相机,所以用户必须为相机授予权限

到目前为止,我的应用程序只有
活动
,但现在我想使用
片段
。 我得到了一个片段,叫做
FragmentScanCode
(这里我想用相机)

这也是第一个片段,所以我想在应用程序开始时授予权限

这是我的代码,来自
MainActivity
,它工作正常

final int RequestCameraPermissionID = 1001;
onRequestPermissionsResult

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case RequestCameraPermissionID: {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                        ActivityCompat.requestPermissions(MainActivity.this,
                                new String[]{Manifest.permission.CAMERA},
                                RequestCameraPermissionID);

                        //return;
                    }
                    try {
                        cameraSource.start(cameraView.getHolder());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            }
            break;
        }
    }
我不能在我的
片段中使用它,因为
ActivityCompat

是否有任何可能的解决方案来授予对片段的权限

这是我在developer.google.com文档上尝试过的,它是有效的

这是我的工作代码。

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults) {
        switch (requestCode){
            case RequestCameraPermissionID: {
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    if(getActivity().checkSelfPermission(Manifest.permission.CAMERA) !=
                    PackageManager.PERMISSION_GRANTED) {
                        requestPermissions(
                                new String[]{Manifest.permission.CAMERA},
                                RequestCameraPermissionID);
                        //cameraSource.start(cameraView.getHolder());
                        return;
                    }
                }
                captureCode();
            }
            break;
        }
    }
还有我的函数
captureCode()


这种行为似乎出现在v4片段支持类requestPermissions in Fragment中。Activity/FragmentCompat实现适用于希望在API级别11到23之间使用具有扩展功能的本机类的人

也许对你有帮助。在片段上调用
requestPermissions()
可能重复,并在同一片段中重写
onRequestPermissionsResult()
。@Ashish我尝试使用doc(编辑了我的问题)但仍然不起作用。@commonware我应该在哪里调用此方法?
try {
                        if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {

                            requestPermissions(
                                    new String[]{Manifest.permission.CAMERA},
                                    RequestCameraPermissionID);
                            return;
                        }
                        cameraSource.start(cameraView.getHolder());

                    } catch (IOException e) {
                        e.printStackTrace();
                    }