我一直在尝试将 React Native 的 GeoLocalisation 用于 Android 应用程序。文档记录不佳的模块可在此处找到 https://facebook.github.io/react-native/docs/geolocation.html .
根据文档,您使用 AndroidManifest.xml
文件中的以下代码处理 Android 上的位置权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
但是,我的在线研究表明,上述代码行对于 ANDROID >= 6.0
由于我的 GeoLocation 实现当前无法正常工作,我没有其他理由相信位置权限没有得到正确处理。
如何在运行时为 React Native Android App 成功请求位置权限? 提前致谢!
最佳答案
我通过更改 android/app/build.gradle
中的 targetSdkVersion
(与 compileSdkVersion 相同,在我的例子中为 23)解决了这个问题。
编辑位于 android/src/main 中的 AndroidManifest.xml 并添加
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
下一个:
import { PermissionsAndroid } from 'react-native';
然后添加这个方法:
export async function requestLocationPermission()
{
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Example App',
'message': 'Example App access to your location '
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the location")
alert("You can use the location");
} else {
console.log("location permission denied")
alert("Location permission denied");
}
} catch (err) {
console.warn(err)
}
}
并在运行时请求位置时访问该方法
async componentWillMount() {
await requestLocationPermission()
}
关于android - 如何在运行时在 React Native 中请求 Android 设备位置的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45822318/