Разрешения: Android не отображается в приложении React Native

Поэтому я меняю геолокацию, сейчас использую Геолокацию от 'react-native-geolocation-service'. Итак, моя проблема теперь не уверена, верны ли мои коды PermissionsAndroid, потому что не отображается диалоговое окно Permission of location. Каждый раз, когда я нажимаю кнопку «Разрешение на местоположение не предоставлено», отображается в console.info, что означает, что разрешение не предоставлено. Как я уже сказал, не появляется диалоговое окно разрешений.

Я хочу, чтобы вы, ребята, проверили мои коды, если где мои ошибки. Это мои коды:

hasLocationPermission = () => {
try{
  const granted = PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
    {
      title: 'Location Permission',
      message: 'You must to accept this to make it work.'
    }
  )
  if (granted === PermissionsAndroid.RESULTS.GRANTED){
    console.info('Location permission accepted.')
  }else{
    console.info("Location permission denied")
  }
} catch (err) {
  console.warn(err)
}
}

getUserLocationHandler = () => {
if (this.hasLocationPermission){
  Geolocation.getCurrentPosition(
    position => {
      this.setState({
        userLocation: {
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
          latitudeDelta: 0.0622,
          longitudeDelta: 0.0421,
        },
      });
    },
    err => console.info(err),
    {
      enableHighAccuracy: true,
      timeout: 15000,
      maximumAge: 10000

    }
  );
}
}

 render() {
return (
  <View style = {styles.container}>
    <FetchLocation onGetLocation = {this.getUserLocationHandler}/>
    <UsersMap userLocation = {this.state.userLocation}/>
  </View>
);
}

"FetchLocation" is the Button and the "UsersMap" is the map.

If you guys know how to show up the Permission Dialog before the app open like the Grab app, that would be better. Thank you!

If you want to see something else in my codes or in my build.gradles, feel free to ask. Thank you!

Вы запрашивали разрешение пользователя во время выполнения?

danijax 17.10.2018 08:54

Неа. Но у меня есть "access_fine_location" в моем android manifest.xml

Liza Catherine Ombyaw 17.10.2018 10:41

Разрешение появится, когда они нажмут кнопку, чтобы перейти к своему местоположению.

Liza Catherine Ombyaw 17.10.2018 10:41

Вам необходимо явно запросить разрешение на выполнение для Android 6 и более поздних версий.

danijax 17.10.2018 21:34

Прочтите о разрешении времени выполнения: facebook.github.io/react-native/docs/permissionsandroid

danijax 17.10.2018 21:38

Как я могу сделать это в собственном коде?

Liza Catherine Ombyaw 18.10.2018 03:06

Извините, здесь не очень опытный разработчик.

Liza Catherine Ombyaw 18.10.2018 03:07

Привет, заходи сюда .. может быть это поможет тебе ... stackoverflow.com/a/68223840/13182553

Deepanshu 02.07.2021 12:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
3 589
3

Ответы 3

вы добавили разрешение в свой файл AndroidManifest? как то, что сказал документация.

<uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" />

Ссылка больше не обновляется.

Jovylle Bermudez 27.06.2021 15:14

Ваш пользовательский текст для запроса разрешения, которое вы добавили:

title: 'Location Permission',
message: 'You must to accept this to make it work.'

не будет отображаться при первом запросе разрешения. Но если пользователь нажимает «отказать» и вы снова запрашиваете разрешение в своем приложении, то появляется ваш текст.

Я тоже боролся с этим, но документы описывают это поведение:

If a user has previously turned off a permission that you prompt for, the OS will advise your app to show a rationale for needing the permission. The optional rationale argument will show a dialog prompt only if necessary - otherwise the normal permission prompt will appear.

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

Если у кого-то есть другой способ, я был бы рад услышать.

Вы также нашли способ показать обоснование при первом запросе?

aryalprakash 28.05.2019 22:15

проверьте, есть ли у вашего приложения уже разрешение, если разрешение предоставлено, оно не будет показывать всплывающее окно

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