react-native
Version:
A framework for building native apps using React
140 lines (138 loc) • 6.2 kB
TypeScript
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<691f77a6fe276e14f15dd37227eaf2ae>>
*
* This file was translated from Flow by scripts/js-api/build-types/index.js.
* Original file: packages/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js
*/
export type Rationale = {
title: string;
message: string;
buttonPositive?: string | undefined;
buttonNegative?: string | undefined;
buttonNeutral?: string | undefined;
};
type PermissionsType = Readonly<{
READ_CALENDAR: "android.permission.READ_CALENDAR";
WRITE_CALENDAR: "android.permission.WRITE_CALENDAR";
CAMERA: "android.permission.CAMERA";
READ_CONTACTS: "android.permission.READ_CONTACTS";
WRITE_CONTACTS: "android.permission.WRITE_CONTACTS";
GET_ACCOUNTS: "android.permission.GET_ACCOUNTS";
ACCESS_FINE_LOCATION: "android.permission.ACCESS_FINE_LOCATION";
ACCESS_COARSE_LOCATION: "android.permission.ACCESS_COARSE_LOCATION";
ACCESS_BACKGROUND_LOCATION: "android.permission.ACCESS_BACKGROUND_LOCATION";
RECORD_AUDIO: "android.permission.RECORD_AUDIO";
READ_PHONE_STATE: "android.permission.READ_PHONE_STATE";
CALL_PHONE: "android.permission.CALL_PHONE";
READ_CALL_LOG: "android.permission.READ_CALL_LOG";
WRITE_CALL_LOG: "android.permission.WRITE_CALL_LOG";
ADD_VOICEMAIL: "com.android.voicemail.permission.ADD_VOICEMAIL";
READ_VOICEMAIL: "com.android.voicemail.permission.READ_VOICEMAIL";
WRITE_VOICEMAIL: "com.android.voicemail.permission.WRITE_VOICEMAIL";
USE_SIP: "android.permission.USE_SIP";
PROCESS_OUTGOING_CALLS: "android.permission.PROCESS_OUTGOING_CALLS";
BODY_SENSORS: "android.permission.BODY_SENSORS";
BODY_SENSORS_BACKGROUND: "android.permission.BODY_SENSORS_BACKGROUND";
SEND_SMS: "android.permission.SEND_SMS";
RECEIVE_SMS: "android.permission.RECEIVE_SMS";
READ_SMS: "android.permission.READ_SMS";
RECEIVE_WAP_PUSH: "android.permission.RECEIVE_WAP_PUSH";
RECEIVE_MMS: "android.permission.RECEIVE_MMS";
READ_EXTERNAL_STORAGE: "android.permission.READ_EXTERNAL_STORAGE";
READ_MEDIA_IMAGES: "android.permission.READ_MEDIA_IMAGES";
READ_MEDIA_VIDEO: "android.permission.READ_MEDIA_VIDEO";
READ_MEDIA_AUDIO: "android.permission.READ_MEDIA_AUDIO";
READ_MEDIA_VISUAL_USER_SELECTED: "android.permission.READ_MEDIA_VISUAL_USER_SELECTED";
WRITE_EXTERNAL_STORAGE: "android.permission.WRITE_EXTERNAL_STORAGE";
BLUETOOTH_CONNECT: "android.permission.BLUETOOTH_CONNECT";
BLUETOOTH_SCAN: "android.permission.BLUETOOTH_SCAN";
BLUETOOTH_ADVERTISE: "android.permission.BLUETOOTH_ADVERTISE";
ACCESS_MEDIA_LOCATION: "android.permission.ACCESS_MEDIA_LOCATION";
ACCEPT_HANDOVER: "android.permission.ACCEPT_HANDOVER";
ACTIVITY_RECOGNITION: "android.permission.ACTIVITY_RECOGNITION";
ANSWER_PHONE_CALLS: "android.permission.ANSWER_PHONE_CALLS";
READ_PHONE_NUMBERS: "android.permission.READ_PHONE_NUMBERS";
UWB_RANGING: "android.permission.UWB_RANGING";
POST_NOTIFICATIONS: "android.permission.POST_NOTIFICATIONS";
NEARBY_WIFI_DEVICES: "android.permission.NEARBY_WIFI_DEVICES";
ACCESS_LOCAL_NETWORK: "android.permission.ACCESS_LOCAL_NETWORK";
}>;
export type PermissionStatus = "granted" | "denied" | "never_ask_again";
export type Permission = PermissionsType[keyof PermissionsType];
declare class PermissionsAndroidImpl {
/**
* A list of specified "dangerous" permissions that require prompting the user.
*/
PERMISSIONS: PermissionsType;
/**
* Possible results of a permission request.
*/
RESULTS: Readonly<{
DENIED: "denied";
GRANTED: "granted";
NEVER_ASK_AGAIN: "never_ask_again";
}>;
/**
* DEPRECATED - use check
*
* Returns a promise resolving to a boolean value as to whether the specified
* permissions has been granted
*
* @deprecated
*/
checkPermission(permission: Permission): Promise<boolean>;
/**
* Check whether the specified permission has been granted. Returns a
* `Promise` resolving to a boolean.
*/
check(permission: Permission): Promise<boolean>;
/**
* DEPRECATED - use request
*
* Prompts the user to enable a permission and returns a promise resolving to a
* boolean value indicating whether the user allowed or denied the request
*
* If the optional rationale argument is included (which is an object with a
* `title` and `message`), this function checks with the OS whether it is
* necessary to show a dialog explaining why the permission is needed
* (https://developer.android.com/training/permissions/requesting#explain)
* and then shows the system permission dialog
*
* @deprecated
*/
requestPermission(permission: Permission, rationale?: Rationale): Promise<boolean>;
/**
* Prompt the user to enable a permission. Returns a `Promise` resolving to a
* `PermissionStatus` string indicating whether the user allowed or denied the
* request.
*
* If the optional `rationale` argument is provided, this function first
* checks with the OS whether it is necessary to show an explanatory dialog
* before presenting the system permission prompt.
*/
request(permission: Permission, rationale?: Rationale): Promise<PermissionStatus>;
/**
* Prompt the user to enable multiple permissions in a single dialog. Returns
* a `Promise` resolving to an object mapping each requested permission to its
* `PermissionStatus`.
*/
requestMultiple(permissions: Array<Permission>): Promise<{ [permission in Permission]: PermissionStatus }>;
}
declare const PermissionsAndroidInstance: PermissionsAndroidImpl;
/**
* Provides access to Android M's (API 23+) permissions model. Handles prompts
* for "dangerous" permissions that require explicit user approval. On devices
* before SDK 23, permissions are automatically granted if listed in the
* manifest.
*
* @see https://reactnative.dev/docs/permissionsandroid
* @platform android
*/
declare const $$PermissionsAndroid: typeof PermissionsAndroidInstance;
declare type $$PermissionsAndroid = typeof $$PermissionsAndroid;
export default $$PermissionsAndroid;