Flutter-geolocator: Android - تم رفض CheckGeolocationPermissionStatus المنفذة لأول مرة

تم إنشاؤها على ٩ يوليو ٢٠٢٠  ·  3تعليقات  ·  مصدر: Baseflow/flutter-geolocator

في نظام Android عندما أقوم بتنفيذ Geolocator (). وظيفة CheckGeolocationPermissionStatus () لأول مرة يتم رفض GeolocationStatus وعدم مطالبة المستخدم بالإذن. لكن في IOS عندما أستدعي نفس الوظيفة لأول مرة ، فإن GeolocationStatus غير معروف لذلك أعلم أنه يجب علي استدعاء Geolocator (). GetCurrentPosition () لطلب الإذن للمستخدم وإعادة الموقع إذا تم منح الإذن.

هل هناك أي طريقة لطلب الإذن من المستخدم في Android عندما أتصل بـ checkGeolocationPermissionStatus لأول مرة؟

أسفل الكود الخاص بي:

Future<void> getLocation() async {
    try {

      var serviceEnabled = await  Geolocator().isLocationServiceEnabled();

      if (serviceEnabled) {
        var geolocationStatus =
            await Geolocator().checkGeolocationPermissionStatus();

        if (geolocationStatus == GeolocationStatus.granted || geolocationStatus == GeolocationStatus.unknown) {
          position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
          return;
        } 
      }
    } catch (e) {
      print(e);
    }
  }

ال 3 كومينتر

يبدو أن مدير البرنامج المساعد هذا ليس مهتمًا أكثر بالحفاظ على مجتمعه أو دعمه ، لقد رأيت العديد من المشكلات ولكن لا يوجد حل دقيق أو إصلاح للأخطاء لهم.

نعم انت محق! رأيت قضايا أخرى لا أجوبة كذلك. = /

azeemgujjar ، @ CNogueira92 ، ليس هذا هو الحال. أنا في الواقع أعمل بجد على إصدار رئيسي تالٍ ، لكن نظرًا لأن معظم مشاريع OSS أحتاج إلى القيام بذلك في وقت فراغي الذي هو في الوقت الحالي محدودًا بعض الشيء ، لذا فإن اهتمامي منقسم قليلاً. بالطبع أرحب بالمساهمات في البرنامج المساعد للمساعدة.

للإجابة على سؤالك @ CNogueira92 ،

على كلا النظامين ، من الجيد طلب الأذونات عندما يُرجع denied checkGeolocationPermissionStatus denied أو unknown . إذا حدد المستخدم الخيار "مرفوض ولا تسأل مرة أخرى" ، فسوف يلاحظ Geolocator ذلك ولن يطلب أذونات.

في الواقع ، لا يتعين عليك حتى التحقق يدويًا من الأذونات لأن Geolocator سيفعل ذلك داخليًا. حتى تتمكن من تحديث التعليمات البرمجية الخاصة بك بأمان إلى:

Future<void> getLocation() async {
    try {

      var serviceEnabled = await  Geolocator().isLocationServiceEnabled();

      if (serviceEnabled) {
        position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
      } else {
        // TODO: ask the user to enable the location services...   
      }
    } catch (e) {
      print(e);
    }
  }

يعد checkGeolocationPermissionStatus طريقة ملائمة فقط في حالة رغبتك في التحقق من الأذونات يدويًا وإشارة المستخدم إلى اتخاذ بعض الإجراءات. في الإصدار الجديد الذي أشرت إليه ، ستتمكن أيضًا من طلب الأذونات يدويًا. إذا كنت ترغب في القيام بذلك الآن ، فستحتاج إلى إجراء مكالمة إلى المكون الإضافي location_permissions الذي يتم شحنه مع أداة تحديد الموقع الجغرافي. يمكن العثور على مزيد من المعلومات حول المكون الإضافي location_permissions هنا .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

prasant10050 picture prasant10050  ·  6تعليقات

fawadkhanucp picture fawadkhanucp  ·  3تعليقات

domliang picture domliang  ·  7تعليقات

lqmminh picture lqmminh  ·  6تعليقات

hectorAguero picture hectorAguero  ·  5تعليقات