मुझे Xamarin में यह समस्या थी। और थायराइड।
Location location = locationManager.GetLastKnownLocation(provider);
शून्य मान लौट रहा था। मैंने अपना कोड चेक किया और मुझे पता चला कि मैंने ACCESS_COARSE_LOCATION के लिए केवल अनुरोध किया था। मैंने ACCESS_FINE_LOCATION के लिए अनुमति का अनुरोध करने के लिए कोड जोड़ा और अब यह शून्य नहीं लौट रहा था। यहाँ मेरा कोड है:
void AskPermissions()
{
if (CheckSelfPermission(Manifest.Permission.AccessCoarseLocation) != (int)Permission.Granted ||
CheckSelfPermission(Manifest.Permission.AccessFineLocation) != (int)Permission.Granted)
RequestPermissions(new string[] { Manifest.Permission.AccessCoarseLocation, Manifest.Permission.AccessFineLocation }, 0);
else
GetLocation();
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
if (CheckSelfPermission(Manifest.Permission.AccessCoarseLocation) == (int)Permission.Granted &&
CheckSelfPermission(Manifest.Permission.AccessFineLocation) == (int)Permission.Granted)
GetLocation();
else
Log.Info(tag, "Permission not Granted: Please enter desired Location manually.");
}
void GetLocation()
{
locationManager = (LocationManager)GetSystemService(LocationService);
provider = locationManager.GetBestProvider(new Criteria(), false);
Location location = locationManager.GetLastKnownLocation(provider);
if (location != null)
Log.Info(tag, "Location Lat: " + location.Latitude + " Lon: " + location.Longitude);
else
Log.Info(tag, "Location is null");
}
मामले में Xamarin.Android (C #) से आने वाले किसी को भी यह उपयोगी लगेगा। जावा या एंड्रॉइड स्टूडियो के लिए कोड कुछ मामूली सिंटैक्स परिवर्तनों के साथ समान GetLastKnownLocation()
होगा जैसे getLastKnownLocation()
जावा में विधि के नाम लोअरकेस अक्षरों से शुरू होते हैं जबकि सी # विधि के नाम अपरकेस अक्षरों से शुरू होते हैं।