React-native:- 位置权限对话框不起作用
Posted
技术标签:
【中文标题】React-native:- 位置权限对话框不起作用【英文标题】:React-native:- Location permission dialog is not working 【发布时间】:2019-05-13 15:51:03 【问题描述】:我想启用我的设备的位置(android pie)。我已经阅读了 react-native 权限的文档,然后尝试实现它,但每次它都说“位置权限被拒绝”。我什至尝试使用外部库(react-native-permissions)然后它说:-“未确定:尚未提示用户使用权限对话框”。我也在清单中给出了权限(FINE_LOCATION 和 COARSE_LOCATION)。我什至尝试在应用程序权限中手动授予权限,但仍然显示权限被拒绝。如何启用位置信息。
代码如下:
async 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);
在 componentDidMount 中调用它:
componentDidMount()
this.requestLocationPermission();
【问题讨论】:
targetSdkVersion
里面的android/app/build.gradle
是什么?
28 targetSdkVersion...buidtoolVersion 是 28.0.3
【参考方案1】:
我也是这样做的。在 AndroidManifest.xml 文件中添加了 FINE_LOCATION 和 COARSE_LOCATION。并像你一样编写上面的代码sn-p。
然后我也收到了位置权限被拒绝消息。
然后我打开了 AndroidStudio 并进行了清理和构建。 从模拟器中删除应用程序并重新运行它,react-native run-android 然后位置权限对话框来了。
【讨论】:
你也可以用这个命令清理它:cd android && ./gradlew clean【参考方案2】:我知道这听起来有点奇怪......
尝试打开 Google 地图。有时会出现该对话框。
从字面上看,这就是我的答案!
【讨论】:
【参考方案3】:您使用的是模拟器吗,定位服务在 Android 模拟器上根本不起作用,这与模拟它的 ios 不同。
安装“react-native-device-info”并在使用定位服务之前检查它是否是安卓模拟器
【讨论】:
【参考方案4】:应用权限方法后,如果您看到类似“位置权限被拒绝”之类的消息,或者您无法看到权限对话框。。然后重置您授予的权限。
1.如果您使用的是模拟器:为此,在命令提示符下在当前项目目录路径中运行 cmd:运行:“adb shell pm reset-permissions "
2.如果您正在使用您的设备,则拒绝设置所有权限。
这将重置您所有给定的权限。之后,在我的情况下,我可以看到权限对话框并能够自行允许或拒绝权限。
【讨论】:
以上是关于React-native:- 位置权限对话框不起作用的主要内容,如果未能解决你的问题,请参考以下文章
React-native - Firebase onAuthStateChanged 无法正常工作
React-Native 和 Detox:无法关闭位置弹出窗口
使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作
react-native:无法使用发布模式访问Android权限