Search code examples
androidkotlindialogandroid-permissions

Is it possible to request runtime permission from a dialog


I just wanted to know if there is a way to request runtime permission from a dialog since the requestPermission() function is not available there.

I already tried to use the context to call this function, but it does not work either


Solution

  • Yes you can

    public class PermissionDialog extends Dialog {
    private Activity mActivity;
    
    public PermissionDialog(@NonNull Context context) {
        super(context);
        mActivity = (Activity) context;
    }
    
    public void requestPermission() {
        if (mActivity != null) {
            if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.YOUR_PERMISSION) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.YOUR_PERMISSION}, YOUR_PERMISSION_REQUEST_CODE);
            }
        }
    }
    

    }

    public class MainActivity extends AppCompatActivity {
    private PermissionDialog mPermissionDialog;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // ...
    
        mPermissionDialog = new PermissionDialog(this);
    
        showDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mPermissionDialog.requestPermission();
            }
        });
    }
    

    }