PermissionsKepler
PermissionsKepler provides access to the Kepler permissions model.
Example
import * as React from 'react';
import { useState } from 'react';
import {
    Button,
    Text,
    View
} from 'react-native';
import { usePermissionsKepler, PERMISSIONS } from '@amzn/react-native-kepler';
const App = () => {
    const [checkStatus, setCheckStatus] = useState('none');
    const [requestStatus, setRequestStatus] = useState('none');
    const [check, request] = usePermissionsKepler();
    const handlePermissionCheck = async (permission) => {
        try {
            const hasPermission = await check(permission);
            setCheckStatus(hasPermission ? "True" : "False");
        } catch (error) {
            console.error("Error checking permissions:", error);
            setCheckStatus(`Error: ${error.message}`);
        }
    };
    const handlePermissionRequest = async (permission) => {
        try {
            const requestResult = await request(permission);
            setRequestStatus(requestResult ? "True" : "False");
        } catch (error) {
            console.error("Error during permission request:", error);
            setRequestStatus(`Error: ${error.message}`);
        }
    };
    return (
        <View style={{ flex: 1 }}>
            <View style={{ marginVertical: 10 }}>
                <Text style={{ color: 'white', fontSize: 24 }}>Check permission</Text>
                <Button
                    onPress={() => handlePermissionCheck(PERMISSIONS.ACCESS_COARSE_LOCATION)}
                    title={'Check'}
                />
            </View>
            <Text style={{ textAlign: 'center', color: 'white', fontSize: 20 }}>{checkStatus}</Text>
            <View style={{ marginVertical: 10 }}>
                <Text style={{ color: 'white', fontSize: 24 }}>Request permission</Text>
                <Button
                    onPress={() => handlePermissionRequest(PERMISSIONS.ACCESS_COARSE_LOCATION)}
                    title={'Request'}
                />
            </View>
            <Text style={{ textAlign: 'center', color: 'white', fontSize: 20 }}>{requestStatus}</Text>
        </View>
    );
};
export default App;
Reference
Hooks
usePermissionsKepler
const [check, request] = usePermissionsKepler();
Returns an array containing two methods to check and request specific permissions.
Methods
check
check(permission: Permission): Promise<boolean>;
Returns a promise that resolves to a boolean value that indicates whether the specified permissions has been granted.
Parameters:
| Name | Type | Required | Description | 
|---|---|---|---|
| permission | Permission | Yes | Checks if a specific permission has been granted. | 
request
request(permission: Permission): Promise<PermissionStatus>;
Requests the specified user permission.
Parameters:
| Name | Type | Required | Description | 
|---|---|---|---|
| permission | Permission | Yes | The function checks whether the permission is already granted. If the permission is already granted, it automatically resolves to grantedwithout showing any dialog. If the permission is not granted, a dialog appears prompting the user with Allow/Deny options. | 
Remarks
The process flow depends on the current state of the permission:
- Permission Already Granted:
    - The function automatically resolves to grantedwithout displaying any dialog if the requested permission has already been granted.
 
- The function automatically resolves to 
- Permission Not Granted:
    - If the permission has not been granted, a dialog box is presented to the user with AllowandDenyoptions.
- User Selects Allow:- The function resolves to granted.
- All future requests for this specific permission will automatically resolve to trueas well, without showing the dialog again.
 
- The function resolves to 
- User Selects Deny:- The function resolves to denied.
- The specific permission request requires that the dialog is shown again on subsequent requests.
 
- The function resolves to 
 
- If the permission has not been granted, a dialog box is presented to the user with 
Returns
Return Type: Promise<PermissionStatus>
One of the PermissionStatus values.
PERMISSIONS
The following table lists the supported permissions.
| Name | Permission | Description | 
|---|---|---|
| NET_INFO | com.amazon.network.privilege.net-info | Allows access to the device IP address and network information. | 
| ACCESS_ACCESSORY_CONTROL_ACCOUNT | com.amazon.acc.privilege.access | Allows initialization and deinitialization of ACC client, performing accessory list querying and performing accessory info querying. | 
| CONNECT_ACCESSORY_CONTROL_ACCOUNT | com.amazon.acc.privilege.connect | Allows accessory connect and disconnect. | 
| DISCOVER_ACCESSORY_CONTROL_ACCOUNT | com.amazon.acc.privilege.discover | Allows accessory discovery. | 
| ACCESS_COARSE_LOCATION | com.amazon.location.privilege.access.coarse | Allows retreival of the coarse geolocation. | 
| ACCESS_FINE_LOCATION | com.amazon.location.privilege.access.fine | Allows retreival fine geolocation and listen to periodic geolocation tracking updates. | 
| RECORD_AUDIO | com.amazon.audio.privilege.microphone.access | Allows access to the device's microphone. | 
| DEVICE_FRIENDLY_NAME | com.amazon.devconf.privilege.identifiers.device-friendly-name | Allows the caller to read the device friendly name. | 
| BLUETOOTH_ADVERTISE | com.amazon.bluetooth.privilege.advertise | Required to use BLE advertisement methods. | 
| BLUETOOTH_DISCOVERABLE | com.amazon.bluetooth.privilege.discoverable | Required to enable Bluetooth connection. | 
| READ_EXTERNAL_STORAGE | com.amazon.external-disk.privilege.readonly | Allows access to external storage in read-only mode. | 
| DISCOVERABLE_ACCESSORY_CONTROL_ACCOUNT | com.amazon.acc.privilege.discoverable | Allows setting of the device visibility mode. | 
| CAMERA | com.amazon.camera.privilege.access | Allows access to the device's camera. | 
| READ_CALENDAR | com.amazon.calendar.privilege.read | Allows access to read from calendar service. | 
| WRITE_CALENDAR | com.amazon.calendar.privilege.write | Allows access to write to calendar service . | 
PermissionStatus
| Name | Description | 
|---|---|
| granted | Permission is granted | 
| denied | Permission request is rejected, for the subsequent call it will prompt user again | 
Last updated: Sep 30, 2025

