How to use the expo-permissions.CONTACTS function in expo-permissions

To help you get started, we’ve selected a few expo-permissions examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github expo / expo / home / utils / PermissionUtils.js View on Github external
import Constants from 'expo-constants';
import * as IntentLauncher from 'expo-intent-launcher';
import * as Permissions from 'expo-permissions';
import { Alert, Linking, Platform } from 'react-native';

const PermissionName = {
  [Permissions.CAMERA]: 'The Camera',
  [Permissions.LOCATION]: 'GPS',
  [Permissions.CAMERA_ROLL]: 'The Gallery',
  [Permissions.AUDIO_RECORDING]: 'The Microphone',
  [Permissions.NOTIFICATIONS]: 'Push Notifications',
  [Permissions.USER_FACING_NOTIFICATIONS]: 'Notifications',
  [Permissions.CONTACTS]: 'Your Contacts',
  [Permissions.CALENDAR]: 'Calendar',
  [Permissions.REMINDERS]: 'Reminders',
};

// Use a controlled prompt to ensure you retain access to the permission prompt.
// If the user rejects the controlled prompt, you can always prompt them again when they're ready.
// Otherwise you'll need to redirect the user to the system settings.
export async function controlledPromptAsync(permission, permissionReason, redirectReason) {
  const { status } = await Permissions.getAsync(permission);
  if (status === 'denied') {
    return requestAsync(permission, false, permissionReason || redirectReason);
  } else if (status === 'granted') {
    return true;
  }

  return new Promise(resolve => {
github expo / expo / apps / native-component-list / src / screens / PermissionsScreen.tsx View on Github external
renderSinglePermissionsButtons() {
    const permissions: Array<[string, Permissions.PermissionType]> = [
      ['CAMERA', Permissions.CAMERA],
      ['AUDIO_RECORDING', Permissions.AUDIO_RECORDING],
      ['LOCATION', Permissions.LOCATION],
      ['USER_FACING_NOTIFICATIONS', Permissions.USER_FACING_NOTIFICATIONS],
      ['NOTIFICATIONS', Permissions.NOTIFICATIONS],
      ['CONTACTS', Permissions.CONTACTS],
      ['SYSTEM_BRIGHTNESS', Permissions.SYSTEM_BRIGHTNESS],
      ['CAMERA_ROLL', Permissions.CAMERA_ROLL],
      ['CALENDAR', Permissions.CALENDAR],
      ['REMINDERS', Permissions.REMINDERS],
    ];
    return permissions.map(([permissionName, permissionType]) => (
github expo / expo / apps / storybook / stories / APIs / Permissions.stories.jsx View on Github external
onPress={() =>
                this.invokePermissionsFunction(
                  ...[
                    Permissions.CAMERA,
                    Permissions.AUDIO_RECORDING,
                    Permissions.LOCATION,
                    Permissions.USER_FACING_NOTIFICATIONS,
                    Permissions.NOTIFICATIONS,
                    Permissions.CONTACTS,
                    Permissions.SYSTEM_BRIGHTNESS,
                    Permissions.CAMERA_ROLL,
                    Permissions.CALENDAR,
                    Permissions.REMINDERS,
                  ]
                )
              }
github slorber / gatsby-plugin-react-native-web / examples / uikits / src / components / expo / ExpoPermissionsExample.js View on Github external
import * as Permissions from 'expo-permissions'
import React, { useEffect, useState } from 'react'
import { Button, ScrollView, Text, View } from 'react-native'

import Example from '../example'

const permissions = [
  ['CAMERA', Permissions.CAMERA],
  ['AUDIO_RECORDING', Permissions.AUDIO_RECORDING],
  ['LOCATION', Permissions.LOCATION],
  ['USER_FACING_NOTIFICATIONS', Permissions.USER_FACING_NOTIFICATIONS],
  ['NOTIFICATIONS', Permissions.NOTIFICATIONS],
  ['CONTACTS', Permissions.CONTACTS],
  ['SYSTEM_BRIGHTNESS', Permissions.SYSTEM_BRIGHTNESS],
  ['CAMERA_ROLL', Permissions.CAMERA_ROLL],
  ['CALENDAR', Permissions.CALENDAR],
  ['REMINDERS', Permissions.REMINDERS],
]

export default function PermissionsExample() {
  return (
    
      
        {permissions.map(([permissionName, permissionType]) => (
github expo / expo / apps / native-component-list / src / screens / Contacts / ContactDetailScreen.tsx View on Github external
checkPermissionAsync = async () => {
    const permission = await getPermissionAsync(Permissions.CONTACTS);
    this.setState({ permission });
  }
github syousif94 / frugalmaps / buncha / utils / Contacts.js View on Github external
export async function getContacts() {
  const { status } = await Permissions.askAsync(Permissions.CONTACTS);
  if (status !== "granted") {
    return [];
  }

  const { data } = await Contacts.getContactsAsync({
    fields: [Contacts.Fields.Name, Contacts.Fields.PhoneNumbers]
  });

  if (!data.length) {
    return [];
  }

  const contacts = data
    .reduce((contacts, item) => {
      const hasUSNumber =
        item.phoneNumbers &&
github expo / expo / apps / native-component-list / src / screens / Contacts / ContactsScreen.tsx View on Github external
checkPermissionAsync = async () => {
    const { status } = await Permissions.askAsync(Permissions.CONTACTS);
    this.setState({ permission: status === 'granted' });
  }