Android onRequestPermissionsResult 仅在 Activity 上被调用,在 Fragment 上不被调用

Android onRequestPermissionsResult is getting called only on Activity but not on Fragment

我有一个 Activity,其中包含一个片段。我请求 activity 的联系许可如下:

ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_CONTACTS}, REQUEST_CODE_PERMISSION);

从片段中,我请求像这样的相机许可:

requestPermissions(new String[] {Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSION);

我在片段和 activity 上都有 onRequestPermissionsResult 方法。问题是,即使我请求片段的许可,activity 中的 onRequestPermissionsResult 也会被调用。片段中的 onRequestPermissionsResult 不会被调用(但如果我从 activity 中删除 onRequestPermissionsResult,它会被调用)。有什么方法可以适当地使用 onRequestPermissionsResult 方法吗?

当您覆盖 Activity 中的方法时,请务必调用 super.onRequestPermissionsResult(...)

也就是说,解决此问题的另一种方法是手动通知 activity 中的 Fragment

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

    final List<Fragment> fragments = getSupportFragmentManager().getFragments();
    if (fragments != null) {
        for (Fragment fragment : fragments) {
            fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}

..如果 requestCode 发送的是他们的,则让您的片段通过执行适当的操作来响应。