Поэтому я меняю геолокацию, сейчас использую Геолокацию от '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!
Неа. Но у меня есть "access_fine_location" в моем android manifest.xml
Разрешение появится, когда они нажмут кнопку, чтобы перейти к своему местоположению.
Вам необходимо явно запросить разрешение на выполнение для Android 6 и более поздних версий.
Прочтите о разрешении времени выполнения: facebook.github.io/react-native/docs/permissionsandroid
Как я могу сделать это в собственном коде?
Извините, здесь не очень опытный разработчик.
Привет, заходи сюда .. может быть это поможет тебе ... stackoverflow.com/a/68223840/13182553



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вы добавили разрешение в свой файл AndroidManifest? как то, что сказал документация.
<uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" />
Ссылка больше не обновляется.
Ваш пользовательский текст для запроса разрешения, которое вы добавили:
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.
Поэтому, если вы не хотите получать уведомление для пользователя, для чего вам нужно разрешение, похоже, вам нужно использовать предупреждение перед первым запросом разрешения.
Если у кого-то есть другой способ, я был бы рад услышать.
Вы также нашли способ показать обоснование при первом запросе?
проверьте, есть ли у вашего приложения уже разрешение, если разрешение предоставлено, оно не будет показывать всплывающее окно
Вы запрашивали разрешение пользователя во время выполнения?