我正在开发一个简单的应用程序,用于显示您的当前位置(纬度和经度)。我正在使用以下功能:
- navigator.geolocation.getCurrentPosition
- navigator.geolocation.watchPosition
但是我注意到,授予权限是在不要求用户许可的情况下进行的。
这是否是Google的规定?
如果是,我如何显示要求许可的对话框?
答案 0 :(得分:4)
对于android,您可以通过从“ react-native”导入来使用PermissionAndroid。
从'react-native'导入{PermissionsAndroid}; //
查看此link以获得更多信息。
对于iOS,您必须填写.plist文件,然后弹出该文件以获取权限。无需显式处理。
答案 1 :(得分:2)
按照android docs
Android应用必须获得访问敏感用户数据(例如联系人和SMS)以及某些系统功能(例如相机和互联网)的权限
如果设备运行的是 Android 6.0(API级别23)或更高版本,并且应用程序的 targetSdkVersion为23 或更高版本,则不会通知用户任何应用程序安装时的权限。您的应用必须要求用户在运行时授予危险权限。
如果设备在任何版本的Android上运行 Android 5.1.1(API级别22)或更低版本,或者应用程序的 targetSdkVersion为22 或更低版本,系统会自动自动要求用户在安装时为您的应用授予所有危险权限。
要手动授予权限,您必须在此link
中提到的每个请求之前使用 PermissionsAndroidtry {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
'title': 'Cool Photo App Camera Permission',
'message': 'Cool Photo App needs access to your camera ' +
'so you can take awesome pictures.'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the camera")
} else {
console.log("Camera permission denied")
}
} catch (err) {
console.warn(err)
}
提到了危险权限列表here
答案 2 :(得分:1)
我认为您应该考虑使用react-native-permissions
Permissions.request('location', { type: 'always' }).then(response => {
this.setState({ locationPermission: response })
})