NativePermissionsAndroid.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. *
  7. * @format
  8. * @flow strict-local
  9. */
  10. 'use strict';
  11. import type {TurboModule} from '../TurboModule/RCTExport';
  12. import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
  13. // TODO: Use proper enum types.
  14. export type PermissionStatus = string;
  15. export type PermissionType = string;
  16. /*
  17. export type PermissionStatus = 'granted' | 'denied' | 'never_ask_again';
  18. export type PermissionType =
  19. | 'android.permission.READ_CALENDAR'
  20. | 'android.permission.WRITE_CALENDAR'
  21. | 'android.permission.CAMERA'
  22. | 'android.permission.READ_CONTACTS'
  23. | 'android.permission.WRITE_CONTACTS'
  24. | 'android.permission.GET_ACCOUNTS'
  25. | 'android.permission.ACCESS_BACKGROUND_LOCATION'
  26. | 'android.permission.ACCESS_FINE_LOCATION'
  27. | 'android.permission.ACCESS_COARSE_LOCATION'
  28. | 'android.permission.RECORD_AUDIO'
  29. | 'android.permission.READ_PHONE_STATE'
  30. | 'android.permission.CALL_PHONE'
  31. | 'android.permission.READ_CALL_LOG'
  32. | 'android.permission.WRITE_CALL_LOG'
  33. | 'com.android.voicemail.permission.ADD_VOICEMAIL'
  34. | 'android.permission.USE_SIP'
  35. | 'android.permission.PROCESS_OUTGOING_CALLS'
  36. | 'android.permission.BODY_SENSORS'
  37. | 'android.permission.SEND_SMS'
  38. | 'android.permission.RECEIVE_SMS'
  39. | 'android.permission.READ_SMS'
  40. | 'android.permission.RECEIVE_WAP_PUSH'
  41. | 'android.permission.RECEIVE_MMS'
  42. | 'android.permission.READ_EXTERNAL_STORAGE'
  43. | 'android.permission.WRITE_EXTERNAL_STORAGE';
  44. */
  45. export interface Spec extends TurboModule {
  46. +checkPermission: (permission: PermissionType) => Promise<boolean>;
  47. +requestPermission: (permission: PermissionType) => Promise<PermissionStatus>;
  48. +shouldShowRequestPermissionRationale: (
  49. permission: string,
  50. ) => Promise<boolean>;
  51. +requestMultiplePermissions: (
  52. permissions: Array<PermissionType>,
  53. ) => Promise<{[permission: PermissionType]: PermissionStatus, ...}>;
  54. }
  55. export default (TurboModuleRegistry.get<Spec>('PermissionsAndroid'): ?Spec);