/** * 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; /** * Check whether the specified permission has been granted. Returns a * `Promise` resolving to a boolean. */ check(permission: Permission): Promise; /** * 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; /** * 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; /** * 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): 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;