android - 允许许可后设备未获取位置 - React Native - Android
问题描述
我正在使用完全取决于位置的反应本机应用程序,因此我为它创建了下面的代码,在大多数真实设备中我无法获取位置,并且总是通过取消或取消警报框返回错误到授予条件再试一次
getLocation = () = {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Permission Title',
'message': 'App ' +
'Message'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
that = this;
navigator.geolocation.getCurrentPosition(
(position) => {
this.checkLogin(position);
},
(error) => {
Alert.alert(
'Location',
'We are not able to get your current location.',
[
{text: 'Cancel', onPress: () => BackHandler.exitApp(), style: 'cancel'},
{text: 'Try Again', onPress: () => this.getLocation()},
],
{ cancelable: false }
)
},
{ enableHighAccuracy: false, timeout: 5000, maximumAge: 1000, distanceFilter: 1 }
);
} else {
alert("Location permission denied")
}
}catch(err){
alert(err)
}
}
在AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
是否有任何适用于所有设备的快速解决方案,或者如果我必须更新上述代码,请告诉我。
解决方案
我会推荐这个库来响应本地地理定位。这是一个开箱即用的可靠插件。您甚至不需要执行自己的权限实现。它为你做。我将它用于我在 React Native 中构建的 Android 和 iOS 应用程序。它甚至可以配置为在后台工作!
推荐阅读
- python - 通过使其重新加载另一个函数来腌制一个用于多处理的函数
- html - XSLT 将属性值评估为 XPath?
- sql - 聚合函数将多行中的值汇总到一个结果行中
- angular - 在 Angular 9 上重新编译后缺少 @Input() 变量
- wordpress - 从 wordpress 中的日期中删除链接
- android - 将项目添加到 GitHub
- javascript - 创建自定义 Web 组件并在不同的框架中共享它
- c# - 获取和设置 winForms ListView 滚动位置
- go - 如何使用 context.Context 与 tcp 连接读取
- amazon-web-services - 无服务器框架 CLI 与 GUI。例如。AWS 控制台