我的代码是:
class _LoadingScreenState extends State<LoadingScreen> {
void getLocation() async {
Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.low);
print(position);
}
我在Android清单文件中添加了以下内容:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
安卓模拟器,GPS已开启。
尝试访问地理位置时,我收到了一个错误:
E/flutter ( 5034): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: User denied permissions to access the device's location.
E/flutter ( 5034): #0 MethodChannelGeolocator.getCurrentPosition (package:geolocator_platform_interface/src/implementations/method_channel_geolocator.dart:127:7)
E/flutter ( 5034): <asynchronous suspension>
E/flutter ( 5034): #1 _LoadingScreenState.getLocation (package:clima/screens/loading_screen.dart:11:25)
E/flutter ( 5034): <asynchronous suspension>
在设置-安全性和位置-隐私-定位-应用程序级别权限
中,我的应用程序权限处于关闭状态。
将其打开后,我收到了一个请求:
为什么会这样?
在https://pub.dev/packages/geolocator中说明:
当您尝试通过getCurrentPosition或getPositionStream方法获取位置时,地理定位器将自动尝试请求权限。但是,我们提供了一些方法,可以让您手动处理请求权限。
权限不应该作为权限请求中的选择结果来设置吗?
我在iOS上也遇到了几乎相同的问题:
在“设置-隐私-位置服务-我的应用程序权限设置为使用期间”。尝试访问地理位置后,我收到了对话框窗口而不是错误:
[VERBOSE-2:ui_dart_state.cc(209)]未处理异常:用户拒绝访问设备的位置。 #0 MethodChannelGeolocator.getCurrentPosition(package:geolocator_platform_interface / src / implementations / method_channel_geolocator.dart:127:7)
#1 _LoadingScreenState.getLocation(package:clima / screens / loading_screen.dart:11:25)
但是为什么?