gpt4 book ai didi

android - React Native Expo Location 权限抛出 Location Provider 警告

转载 作者:行者123 更新时间:2023-12-04 13:09:54 27 4
gpt4 key购买 nike

我正在尝试使用 expo 创建一个 React Native 应用程序。
我的应用需要用户许可才能获取当前位置。
我有一个功能组件,它具有 useEffect() Hook 以异步获取权限。
代码如下。

const [location, setLocation] = useState(null);
useEffect(() => {
(async () => {
let permissionStatus = null;
if (Platform.OS === 'ios') {
let {status} = await Permissions.askAsync(Permissions.LOCATION);
permissionStatus = status;
} else {
let {status} = await ExpoLocation.requestPermissionsAsync();
permissionStatus = status;
}
if (permissionStatus !== 'granted') {
return;
}
let location = await ExpoLocation.getCurrentPositionAsync({});
setLocation(location);
console.log(location);
})();
}, []);

它有时可以正常工作,但有时会抛出此警告:
未处理的 promise 拒绝:错误:位置提供者不可用。确保已启用定位服务。该应用程序显示权限请求对话框,并在同意后打开手机中的定位服务,但仍然抛出此警告/错误。
在对该网站和其他一些网站进行彻底研究后,我将 ACCESS_COARSE_LOCATION 添加到我的 app.json.android.permissions 配置中并尝试了一些其他值,但最后我仍然经常遇到这个问题。
值得一提的是,对于配置的所有排列,代码可以完美运行,有时会为相同的配置抛出此错误/警告。
我正在使用 Expo SDK 40 并且 expo-location 包版本为 ~10.0.0 并在 Android 10 上进行测试> 使用 Expo Go 客户端应用程序的手机。
对于如何解决此问题的任何见解或建议,我将不胜感激。
随时要求任何澄清。

最佳答案

这个问题与我在过去一年中研究的问题类似。在我的代码中,我最终也添加了 enableHighAccuracy,我认为这很有帮助。但它是一个未处理的 Promise Rejection 这一事实表明您至少应该添加一个 try/catch 以便在它因任何原因中断时优雅地处理。

gpsLocationFromDevice = await Location.getCurrentPositionAsync({ enableHighAccuracy: true });

关于android - React Native Expo Location 权限抛出 Location Provider 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66563299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com