# RequestUserPermission

> Request the user to grant access to a device resource or information that requires authorization.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.Android](/engine/6000.5/script-reference/unityengine/android.md)
* **Assembly:** UnityEngine.AndroidJNIModule

## RequestUserPermission(string)

Request the user to grant access to a device resource or information that requires authorization.

```csharp
public static void RequestUserPermission(string permission)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): A string that describes the permission to request. For permissions which Unity has not predefined, you can provide Android's in-built permission strings such as "android.permission.READ\_CONTACTS". For a list of permission strings, refer to Android's documentation on [Manifest.permission](https://developer.android.com/reference/android/Manifest.permission).

### Remarks

The `RequestUserPermission` method doesn't wait for the user response and returns immediately. If the system permission dialog is displayed, the application suspends.

You can use [HasUserAuthorizedPermission](/engine/6000.5/script-reference/unityengine/android/permission/hasuserauthorizedpermission.md) method to check the status of the permission request.

The following code example checks whether the user has granted microphone access and requests permission if access has not been granted.

### Examples

```csharp
using UnityEngine;
using UnityEngine.Android;

public class RequestPermissionExample : MonoBehaviour
{
    void Start()
    {
        if (Permission.HasUserAuthorizedPermission(Permission.Microphone))
        {
            // The user has authorized use of the microphone.
        }
        else
        {
            // The user has not authorized microphone usage.
            // Ask for microphone permission.
            Permission.RequestUserPermission(Permission.Microphone);
        }
    }
}
```

## RequestUserPermission(string, PermissionCallbacks)

Request the user to grant access to a device resource or information that requires authorization.

```csharp
public static void RequestUserPermission(string permission, PermissionCallbacks callbacks)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): A string that describes the permission to request. For permissions which Unity has not predefined, you can provide Android's in-built permission strings such as "android.permission.READ\_CONTACTS". For a list of permission strings, refer to Android's documentation on [Manifest.permission](https://developer.android.com/reference/android/Manifest.permission).**** (\[PermissionCallbacks]\(/engine/6000.5/script-reference/unityengine/android/permissioncallbacks)): An instance of callbacks invoked when permission request is executed.

### Remarks

The `RequestUserPermission` method doesn't wait for the user response and returns immediately. If the system permission dialog is displayed, the application suspends.

This version of `RequestUserPermission` invokes an instance of callbacks when executed.

You can use [HasUserAuthorizedPermission](/engine/6000.5/script-reference/unityengine/android/permission/hasuserauthorizedpermission.md) method to check the status of the permission request.

The following code example checks whether the user has granted microphone access and requests permission with callbacks if the access has not been granted.

### Examples

```csharp
using UnityEngine;
using UnityEngine.Android;

public class RequestPermissionExample : MonoBehaviour
{
    internal void PermissionCallbacks_PermissionDeniedAndDontAskAgain(string permissionName)
    {
        Debug.Log($"{permissionName} PermissionDeniedAndDontAskAgain");
    }

    internal void PermissionCallbacks_PermissionGranted(string permissionName)
    {
        Debug.Log($"{permissionName} PermissionCallbacks_PermissionGranted");
    }

    internal void PermissionCallbacks_PermissionDenied(string permissionName)
    {
        Debug.Log($"{permissionName} PermissionCallbacks_PermissionDenied");
    }

    void Start()
    {
        if (Permission.HasUserAuthorizedPermission(Permission.Microphone))
        {
            // The user authorized use of the microphone.
        }
        else
        {
            // The user has not authorized microphone usage.
            // Request microphone permission with callbacks.
            var callbacks = new PermissionCallbacks();
            callbacks.PermissionDenied += PermissionCallbacks_PermissionDenied;
            callbacks.PermissionGranted += PermissionCallbacks_PermissionGranted;
            callbacks.PermissionDeniedAndDontAskAgain += PermissionCallbacks_PermissionDeniedAndDontAskAgain;
            Permission.RequestUserPermission(Permission.Microphone, callbacks);
        }
    }
}
```
