PermissionsAndroid не отображается в приложении React Native - PullRequest
0 голосов
/ 17 октября 2018

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

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

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.log('Location permission accepted.')
  }else{
    console.log("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.log(err),
    {
      enableHighAccuracy: true,
      timeout: 15000,
      maximumAge: 10000

    }
  );
}
}

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

"FetchLocation" - это кнопка, а "UsersMap" - это карта.

Если вы, ребята, знаете, как открыть диалог разрешений доприложение, открытое как приложение Grab, было бы лучше.Спасибо!

Если вы хотите увидеть что-то еще в моих кодах или в моем build.gradles, не стесняйтесь спрашивать.Спасибо!

Ответы [ 3 ]

0 голосов
/ 10 апреля 2019

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

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

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

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

Если пользователь ранее отключил разрешение, которое вы запрашиваете, ОС посоветует вашему приложению показать обоснование необходимости разрешения.Необязательный аргумент обоснования будет отображать диалоговое окно только в случае необходимости, в противном случае появится обычное приглашение для разрешения.

Так что, если вы не хотите получать уведомление для пользователя, зачем вам разрешение?Кажется, вам нужно использовать предупреждение перед первым запросом на разрешение.

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

0 голосов
/ 27 июля 2019

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

0 голосов
/ 17 октября 2018

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

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