# What's the best way to check for permissions at runtime using MVP architecture?

**URL:** <https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667>\
**Category:** Android\
**Created:** [July 23, 2020, 12:04pm UTC](https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667 "2020-07-23T12:04:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![szczurk3y](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/szczurk3y/32/81494_2.png) [@szczurk3y](https://forums.kodeco.com/u/szczurk3y)\
**Post date:** [July 23, 2020, 12:04pm UTC](https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667/1 "2020-07-23T12:04:09Z")

</div>

I’m wondering how should i ask for permissions at runtime using the MVP architecture (so i can unit test it).

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [April 4, 2021, 3:49am UTC](https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667/3 "2021-04-04T03:49:29Z")

</div>



---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [April 4, 2021, 3:49am UTC](https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667/4 "2021-04-04T03:49:47Z")

</div>

@szczurk3y Do you still have issues with this?

---

<div class="post-metadata">

**Author:** ![elianawilson](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/elianawilson/32/111721_2.png) [@elianawilson](https://forums.kodeco.com/u/elianawilson)\
**Post date:** [June 29, 2021, 1:51pm UTC](https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667/5 "2021-06-29T13:51:05Z")

</div>

I’m developing an android app in which I have to ask for permissions at runtime. I’m wondering about the best way to implement that using Model-View-Presenter architecture.

My initial thought was to have the presenter call a component responsible for permissions(say a PermissionHandler), and update view accordingly.

The issue is that the code to check for permissions is tightly coupled with the Activity class. Here are some of the methods involved that require an Activity or Context:

ContextCompat.checkSelfPermission()  
ActivityCompat.shouldShowRequestPermissionRationale()  
ActivityCompat.requestPermissions()  
onRequestPermissionsResult()(callback)  
This means I would have to pass an activity object to the presenter, which I didn’t like much because I’ve heard that keeping your presenter free from Android code is good for testing.

Due to that, I then thought about handling permissions at view level(in an activity), but then I guess this would hurt the purpose of leaving the view responsible only for UI updates, without business logic.

---

<div class="post-metadata">

**Author:** ![dale65a](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/dale65a/32/110937_2.png) [@dale65a](https://forums.kodeco.com/u/dale65a)\
**Post date:** [April 21, 2025, 11:32am UTC](https://forums.kodeco.com/t/whats-the-best-way-to-check-for-permissions-at-runtime-using-mvp-architecture/115667/6 "2025-04-21T11:32:31Z")

</div>

> [@szczurk3y](#):
>
> I’m wondering how should i ask for permissions at runtime using the MVP architecture (so i can unit test it). [paturnpike](https://www-ezpasspa.com/)

To ask for runtime permissions in MVP for unit testing, create a `PermissionView` interface with methods like `requestPermissions`, `showPermissionRationale`, `onPermissionsGranted`, and `onPermissionsDenied`. Your Activity/Fragment implements this interface to handle actual Android permission requests. Your Presenter holds the permission logic and interacts with the `PermissionView` interface. For testing, mock the `PermissionView` in your Presenter unit tests to verify the permission request flow without Android dependencies. This separation of concerns ensures testability.
