Skip to content
This repository was archived by the owner on Oct 3, 2024. It is now read-only.
This repository was archived by the owner on Oct 3, 2024. It is now read-only.

Fragment can't receive onRequestPermissionsResult after showing RationaleDialog #198

@b95505017

Description

@b95505017

If we call EasyPermissions.requestPermissions from Fragment and show rational dialog:

    @Override
    public void showRequestPermissionRationale(@NonNull String rationale,
                                               @NonNull String positiveButton,
                                               @NonNull String negativeButton,
                                               @StyleRes int theme,
                                               int requestCode,
                                               @NonNull String... perms) {

        FragmentManager fm = getSupportFragmentManager();

https://github.com/googlesamples/easypermissions/blob/master/easypermissions/src/main/java/pub/devrel/easypermissions/helper/BaseSupportPermissionsHelper.java#L32

    @Override
    public FragmentManager getSupportFragmentManager() {
        FragmentActivity hostActivity = getHost().getActivity();
        if (hostActivity != null) {
            return hostActivity.getSupportFragmentManager();
        } else {
            return getHost().getChildFragmentManager();
        }
    }

This will return hostActivity.getSupportFragmentManager(), causing request permissions using ActivityCompat.requestPermissions(xxx), this way the host fragment can't receive onRequestPermissionsResult, only its host Activity.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions