Requests a runtime permission on devices running Android M (API 23) and above.
This class is usually used to grant runtime permissions to avoid the permission dialog from
showing up and blocking the App's Ui. This is especially helpful for Ui-Testing to avoid loosing
control over your application under test.
The requested permissions will be granted for all test methods in the test class. Use addPermissions(String) to add a permission to the permission list. To request all
permissions use the requestPermissions() method.
Note: Usually this class would not be used directly, but through GrantPermissionRule.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[],null,["# PermissionRequester\n\nSummary: [Ctors](#pubctors) \\| [Methods](#pubmethods) \\| [Protected Methods](#promethods) \\| [Inherited Methods](#inhmethods) \\| [\\[Expand All\\]](#) \n\nPermissionRequester\n===================\n\n| This package is part of the Android [support library](/topic/libraries/support-library) which is no longer maintained. The support library has been superseded by [AndroidX](/jetpack/androidx) which is part of [Jetpack](/jetpack). We recommend using the AndroidX libraries in all new projects. You should also consider [migrating](/jetpack/androidx/migrate) existing projects to AndroidX. To find the AndroidX class that maps to this deprecated class, see the AndroidX support library [class\n| mappings](/jetpack/androidx/migrate/class-mappings).\n\n\n`\npublic\n\n\nclass\nPermissionRequester\n`\n\n\n`\n\nextends `[Object](https://developer.android.com/reference/java/lang/Object.html)`\n\n\n`\n\n`\n\n\n`\n\n|---|------------------------------------------------------------|\n| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||\n| ↳ | android.support.test.runner.permission.PermissionRequester |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\nRequests a runtime permission on devices running Android M (API 23) and above.\n\nThis class is usually used to grant runtime permissions to avoid the permission dialog from\nshowing up and blocking the App's Ui. This is especially helpful for Ui-Testing to avoid loosing\ncontrol over your application under test.\n\nThe requested permissions will be granted for all test methods in the test class. Use [addPermissions(String)](/reference/android/support/test/runner/permission/PermissionRequester#addPermissions(java.lang.String...)) to add a permission to the permission list. To request all\npermissions use the [requestPermissions()](/reference/android/support/test/runner/permission/PermissionRequester#requestPermissions()) method.\n\nNote: Usually this class would not be used directly, but through [GrantPermissionRule](/reference/android/support/test/rule/GrantPermissionRule).\n\n**This API is currently in beta.**\n\nSummary\n-------\n\n| ### Public constructors ||\n|----------------------------------------------------------------------------------------------------------------------------|---|\n| ` `[PermissionRequester](/reference/android/support/test/runner/permission/PermissionRequester#PermissionRequester())`() ` |\n\n| ### Public methods ||\n|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ` void` | ` `[addPermissions](/reference/android/support/test/runner/permission/PermissionRequester#addPermissions(java.lang.String...))`(`[String...](https://developer.android.com/reference/java/lang/String.html)` permissions) ` Adds a permission to the list of permissions which will be requested when [requestPermissions()](/reference/android/support/test/runner/permission/PermissionRequester#requestPermissions()) is called. |\n| ` void` | ` `[requestPermissions](/reference/android/support/test/runner/permission/PermissionRequester#requestPermissions())`() ` Request all permissions previously added using [addPermissions(String)](/reference/android/support/test/runner/permission/PermissionRequester#addPermissions(java.lang.String...)) Precondition: This method does nothing when called on an API level lower than [M](https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#M). |\n\n| ### Protected methods ||\n|---------|---------------------------------------------------------------------------------------------------------------------------------------------------|\n| ` void` | ` `[setAndroidRuntimeVersion](/reference/android/support/test/runner/permission/PermissionRequester#setAndroidRuntimeVersion(int))`(int sdkInt) ` |\n\n| ### Inherited methods |\n|-----------------------|---|\n| From class ` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object.html)` ` |-------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object.html) | ` clone() ` | | ` boolean` | ` equals(`[Object](https://developer.android.com/reference/java/lang/Object.html)` arg0) ` | | ` void` | ` finalize() ` | | ` final `[Class](https://developer.android.com/reference/java/lang/Class.html)`\u003c?\u003e` | ` getClass() ` | | ` int` | ` hashCode() ` | | ` final void` | ` notify() ` | | ` final void` | ` notifyAll() ` | | ` `[String](https://developer.android.com/reference/java/lang/String.html) | ` toString() ` | | ` final void` | ` wait(long arg0, int arg1) ` | | ` final void` | ` wait(long arg0) ` | | ` final void` | ` wait() ` | ||\n\nPublic constructors\n-------------------\n\n### PermissionRequester\n\n```\nPermissionRequester ()\n```\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nPublic methods\n--------------\n\n### addPermissions\n\n```\nvoid addPermissions (String... permissions)\n```\n\nAdds a permission to the list of permissions which will be requested when [requestPermissions()](/reference/android/support/test/runner/permission/PermissionRequester#requestPermissions()) is called.\n\nPrecondition: This method does nothing when called on an API level lower than [M](https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#M).\n\n\u003cbr /\u003e\n\n| Parameters ||\n|---------------|---------------------------------------------------------|\n| `permissions` | `String`: a list of Android runtime permissions. \u003cbr /\u003e |\n\n### requestPermissions\n\n```\nvoid requestPermissions ()\n```\n\nRequest all permissions previously added using [addPermissions(String)](/reference/android/support/test/runner/permission/PermissionRequester#addPermissions(java.lang.String...))\n\nPrecondition: This method does nothing when called on an API level lower than [M](https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#M).\n\n\u003cbr /\u003e\n\nProtected methods\n-----------------\n\n### setAndroidRuntimeVersion\n\n```\nvoid setAndroidRuntimeVersion (int sdkInt)\n```\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Parameters ||\n|----------|--------------|\n| `sdkInt` | `int` \u003cbr /\u003e |\n\n-\n\n Classes\n -------\n\n - [PermissionRequester](/reference/android/support/test/runner/permission/PermissionRequester)\n - [RequestPermissionCallable](/reference/android/support/test/runner/permission/RequestPermissionCallable)\n - [ShellCommand](/reference/android/support/test/runner/permission/ShellCommand)\n-\n\n Enums\n -----\n\n - [RequestPermissionCallable.Result](/reference/android/support/test/runner/permission/RequestPermissionCallable.Result)"]]