嗨,我正在使用以下代码从我的片段中请求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;
            }


现在,当我第一次运行应用程序时,当我单击允许我的应用程序在后台崩溃时,它会询问相机许可,然后我看到存储的许可框。

还可以在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;
.
.
.
.
.
}
}
}


当我看到警告过滤日志时,无法跟踪堆栈跟踪之后的崩溃日志:

W/ActivityManager: Force removing ActivityRecord{b66a7b9 u0 com.bootinfotech.queue.patient/com.indexnine.patient.activity.MainActivity t160}: app died, no saved state


我也无法获得导致应用程序失败的确切错误。可能出了什么问题。用于测试Moto G4(Android M)的设备。

当我单击允许摄像机权限系统对话框时,调试器也会断开连接。

最佳答案

如果目标sdk低于23。权限结果将始终返回0(PERMISSION_GRANTED)。将目标SDK版本更改为23,然后尝试。

参考:CheckSelfPermission method is not working in targetSdkVersion 22

07-27 20:50
查看更多