[英]flutter location , Unhandled Exception: PlatformException(PERMISSION_DENIED_NEVER_ASK, Background location permission denied forever
我正在使用Location flutter package 來訪問用戶的后台位置,任何用戶第一次打開它請求許可的應用程序,當用戶接受它時,它會在控制台中帶回此錯誤
Unhandled Exception: PlatformException(PERMISSION_DENIED_NEVER_ASK, Background location permission denied forever - please open app settings, null, null)
如果用戶關閉應用程序並重新打開它......它工作得很好(在前台和后台獲取位置)甚至不需要再次請求位置許可。
按照 package 本身中的入門指南,以下是我如何向我的AndroidManifest.xml
文件添加權限:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
我一直在研究這個問題,我發現問題是當你使用location.enableBackgroundMode()
然后在你第一次返回時選擇always
它拋出異常並且isBackgroundModeEnabled
也將是 false “盡管在系統中啟用了背景模式" 並且您必須重新啟動應用程序以檢查后台模式是否已正確啟用。
但是,我發現再次調用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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.