我正在使用Location flutter 包访问用户的后台位置,任何用户第一次打开应用程序时都会请求权限,当用户接受时,它会在控制台中返回此错误
Unhandled Exception: PlatformException(PERMISSION_DENIED_NEVER_ASK, Background location permission denied forever - please open app settings, null, null)
如果用户关闭应用程序并重新打开它..它工作得很好(在前台和后台获取位置),甚至不需要再次请求位置权限。
按照包本身的入门指南,以下是我向 AndroidManifest.xml
文件添加权限的方法:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
最佳答案
我一直在研究这个问题,我发现问题出在您使用 location.enableBackgroundMode()
时然后选择always
当你第一次回击时,它会抛出异常并 isBackgroundModeEnabled
也将是错误的“尽管系统中启用了后台模式”,并且您必须重新启动应用程序以检查后台模式是否正确启用。
但是,我发现调用location.enableBackgroundMode()
再次也解决了这个问题,它确实不需要再次启用后台,但它以某种方式使 isBackgroundModeEnabled
返回真值。这是我的修复代码:
Future<bool> enableBackgroundMode() async {
bool _bgModeEnabled = await location.isBackgroundModeEnabled();
if (_bgModeEnabled) {
return true;
} else {
try {
await location.enableBackgroundMode();
} catch (e) {
debugPrint(e.toString());
}
try {
_bgModeEnabled = await location.enableBackgroundMode();
} catch (e) {
debugPrint(e.toString());
}
print(_bgModeEnabled); //True!
return _bgModeEnabled;
}
}
关于android - flutter 位置,未处理的异常 : PlatformException(PERMISSION_DENIED_NEVER_ASK, 后台位置权限永远被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70545730/