Skip to content
This repository has been archived by the owner on Jul 2, 2021. It is now read-only.

Showing a dialog before android permision dialog onPermissionRationaleShouldBeShown does not work when pressing back button #213

Open
omidp opened this issue Jul 22, 2018 · 2 comments

Comments

@omidp
Copy link

omidp commented Jul 22, 2018

Expected behaviour

I want to help the user understand why my app needs a permission before showing android permission dialog. I'm using a helper dialog to explain that. I disabled the back press button on the helper dialog so the only way to close the dialog is to press a button on the dialog. after user press the close button I consume token with token.continuePermissionRequest(); and android permission dialog is shown and everything should continue to be working fine.

Actual behaviour

when a helper dialog is displayed to user to explain why permission needed and user press on back button then clicks on dialog close button dexter does not work anymore anywhere and show nothing.

Steps to reproduce

  1. after the helper dialog is shown just press back button then continue.
@Override
    public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token)
    {
        new AlertDialog.Builder(context).setTitle("test")
                .setMessage("test")
                .setCancelable(false)
                .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                    @Override public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        token.continuePermissionRequest();
                    }
                })
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        token.continuePermissionRequest();
                    }
                })
                .setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override public void onDismiss(DialogInterface dialog) {
                        token.continuePermissionRequest();
                    }
                })
                .show();

    }
`

  

Dexter.withActivity(this)
                .withPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                .withListener(dialogPermissionListener)
                .check();

Version of the library

5.0.0

@anggrayudi
Copy link

anggrayudi commented Dec 1, 2020

token.cancelPermissionRequest() cancels the permission request until the app is killed. It have been discussed few years ago in #170. @eygraber told us that he wants to mimic Google's way when cancelling the permission request. But this comes to a problem when we want to display a consent dialog before showing the permission dialog.

Agreed with @omidp. Not all apps should follow Google's UX. Every company has their own UI/UX designer. Adding parameter canRequestAgain into token.cancelPermissionRequest(boolean) is a good idea.

@pedrovgs
Copy link
Contributor

pedrovgs commented Dec 4, 2020

I don't get if you are reporting a bug or a feature. Not all apps should follow Google's UX but not all libraries should follow your design requirements either. Don't you think so? If we are talking about a bug, could you please provide a minimum working example and a list of steps to reproduce so I can test it out? Thank you in advance.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants