Реагировать на родную геолокацию, не спрашивая разрешения пользователя на эмуляторе Android

Привет, я использую приведенный ниже код для успешного получения местоположения пользователя, но в эмуляторе Android он не спрашивает пользователя, хотят ли они поделиться своим местоположением (даже после того, как я переустановил приложение).

Код отлично работает ... но мне бы очень хотелось, чтобы появилось стандартное предупреждение, в котором говорится: «Вы уверены, что хотите поделиться своим местоположением с приложением?»

Любое руководство будет оценено

navigator.geolocation.getCurrentPosition(
        (pos) => {
          console.info(pos.coords.longitude, pos.coords.latitude);
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
1 614
1

Ответы 1

Я думаю, что разрешение на местоположение не отображается снова, если вы переустанавливаете приложение, потому что телефон все еще запоминает разрешения, предоставленные для приложения. Вы можете проверить, есть ли у приложения разрешение, в настройках Android с приложением (https://www.howtogeek.com/230683/how-to-manage-app-permissions-on-android-6.0/).

Может быть, этот код поможет вам

import { PermissionsAndroid } from 'react-native';

async function getLocation() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        'title': 'App',
        'message': 'are you sure you want to share your location with the app ?'
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      // permission granted
      // do code get location here.
      navigator.geolocation.getCurrentPosition(
        (pos) => {
          console.info(pos.coords.longitude, pos.coords.latitude);
        })
    } else {
      // permission denied
      console.info("GPS permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}

Вы можете зайти в настройки приложения, чтобы сбросить настройки местоположения .... не нужно переустанавливать приложение. Кроме того, приведенный выше код бесполезен, потому что (а) всплывающее окно не может быть (легко) отклонено пользователем, поскольку оно не имеет необходимых кнопок (нейтральный / отрицательный / положительный) и (б) независимо от того, что пользователь выбирает из метода запроса их спросят снова, как только они нажмут navigator.geolocation. Очень странно. В любом случае спасибо за ваш вклад

james murphy 03.02.2019 01:43

Другие вопросы по теме