在AndroidFragment中启用允许权限会导致应用程序崩溃吗?

在AndroidFragment中启用允许权限会导致应用程序崩溃吗?,android,android-camera,android-permissions,Android,Android Camera,Android Permissions,您好,我正在使用以下代码从我的片段请求android中的摄像头许可: ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},

您好,我正在使用以下代码从我的片段请求android中的摄像头许可:

 ActivityCompat.requestPermissions(getActivity(),
                                    new String[]{Manifest.permission.CAMERA,
                                            Manifest.permission.WRITE_EXTERNAL_STORAGE},
                                    MainActivity.PROFILEIMAGE_REQUEST);
case MainActivity.PROFILEIMAGE_REQUEST: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED ) {
                    Log.e("Fragment","In OnRequestPermission onRequestPermissionsResult");
                    dispatchTakePictureIntent(MainActivity.PROFILEIMAGE_REQUEST);                }
                return;
            }
然后使用以下代码在同一片段中处理权限结果:

 ActivityCompat.requestPermissions(getActivity(),
                                    new String[]{Manifest.permission.CAMERA,
                                            Manifest.permission.WRITE_EXTERNAL_STORAGE},
                                    MainActivity.PROFILEIMAGE_REQUEST);
case MainActivity.PROFILEIMAGE_REQUEST: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED ) {
                    Log.e("Fragment","In OnRequestPermission onRequestPermissionsResult");
                    dispatchTakePictureIntent(MainActivity.PROFILEIMAGE_REQUEST);                }
                return;
            }
现在,当我第一次运行应用程序时,当我单击“允许我的应用程序在后台崩溃”时,它会询问相机权限,然后我会看到存储的权限框

也可在MainActivity中编码:

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        List<Fragment> fragments = getSupportFragmentManager().getFragments();
        Log.e("MainActivity", "In OnRequestPermission 1");

        if (fragments != null) {
            for (Fragment fragment : fragments) {
                switch (requestCode) { 
.
.
.
 case PROFILEIMAGE_REQUEST:
                        if (fragment instanceof ProfileFragment) {
                            fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
                            Log.e("MainActivity","In OnRequestPermission PROFILEIMAGE_REQUEST");
                            return;
                        }
                        break;
.
.
.
.
.
}
}
}
此外,我无法获得导致应用程序失败的确切错误。可能出了什么问题。用于测试Moto G4(安卓M)的设备


此外,只要我单击“允许摄像头权限系统”对话框,调试器就会断开连接

如果您的目标sdk低于23。权限结果将始终返回0(已授予权限)。将目标sdk版本更改为23,然后重试


Ref:

您可以在活动类中请求或检查权限。并在活动类中处理其结果。请提供更多信息code@Vyacheslav我只在第一次运行时出错,而不是在第二次运行时,相同的代码能够在第二次运行时得到图像run@amolanerao,再次:请输入更多代码以检查此代码。您的
requestPemissons
看起来不错。另一个代码也正在初始化。太棒了!!!目标Sdk是问题所在,非常感谢Raghvendra,请将您的评论作为答案发布,以便我可以投票。