簡體   English   中英

flutter 位置,未處理的異常:平台異常(PERMISSION_DENIED_NEVER_ASK,后台位置權限永遠被拒絕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM