我正在实现获取华为设备的设备位置,它是工作时,权限被授予,但当被拒绝应用程序崩溃。
用谷歌的定位,这从来没有发生过。
下面是我的代码获取位置:
Future<Location?> getAccuratePositionH() async {
PermissionHandler permissionHandler = PermissionHandler();
bool status = await permissionHandler.requestLocationPermission();
if (status) {
FusedLocationProviderClient locationService = FusedLocationProviderClient();
Location location = await locationService.getLastLocation();
return location;
}
else {
return null;
}
}
这是我在控制台中得到的:
I/cgr.qrmv.QrMobVisPlugin( 5178): Permissions request denied.
W/cgr.qrmv.QrMobVisPlugin( 5178): Starting QR Mobile Vision failed
W/cgr.qrmv.QrMobVisPlugin( 5178): com.github.rmtmckenzie.qrmobilevision.QrReader$Exception: QR reader failed because noPermissions
以及
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=1, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.lea24.partyfinder/com.lea24.partyfinder.MainActivity}: java.lang.NullPointerException: Attempt to read from field 'io.flutter.plugin.common.MethodChannel$Result com.github.rmtmckenzie.qrmobilevision.QrMobileVisionPlugin$ReadingInstance.startResult' on a null object reference
为什么这里是QR移动的视觉?我不知道,真的,它发生后,拒绝位置权限.
我做错了什么,该如何改正?
1条答案
按热度按时间zqry0prt1#
如果权限一旦被永久拒绝就被拒绝。因此,用户必须从设置中手动更改它。你所能做的就是将用户重定向到设置。在请求权限之前,请确保权限尚未被拒绝,否则它将在没有任何警告的情况下使你的应用崩溃,如下面的代码所示。
下面的代码使用permission_handler请求权限,使用Getx显示无上下文对话框。此函数将返回权限的状态,您可以通过检查是否允许来继续使用它。
完整代码
x一个一个一个一个x一个一个二个x