打开设置后检查用户授予特定权限

check user grant specific permission after opening setting

当用户选中不再询问选项并按下拒绝时,我会通过显示一个按钮来更新视图,以便再次想要更改权限设置时不需要打开设置并更改权限,然后单击按钮设置将打开。

我使用以下代码打开设置:

Intent intent = new Intent();
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", mContext.getApplicationContext().getPackageName(), null);
        intent.setData(uri);
        startActivityForResult(intent, PERMISSIONS_REQUEST_CAMERA);

但在 onActivityResult 中,甚至用户是否授予结果代码都是 0,我无法理解是否在我的 Fragment 中启动相机。

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == PERMISSIONS_REQUEST_CAMERA)
            if (resultCode == Activity.RESULT_OK)
                startCamera();
            else {
                changeUiToNotGrantedView();
            }
    }

当用户 returns 来自设置时,您应该再次检查现在是否已授予权限 requestPermissions( arrayOf(Manifest.permission.CAMERA), YOUR_REQUEST_CODE).

如果用户在设置中授予相机权限,您会在onRequestPermissionsResult(...)中知道,并根据它可以启动相机。