জ্যামারিন.আন্ড্রয়েডে আমার এই সমস্যা ছিল।
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");
}
জামারিন.এন্ড্রয়েড (সি #) থেকে যে কেউ আসে সে ক্ষেত্রে এটি দরকারী মনে হয়। জাভা বা অ্যান্ড্রয়েড স্টুডিওর জন্য কোডটি কিছুটা ছোট ছোট সিনট্যাক্সের পরিবর্তনের সাথে একই রকম GetLastKnownLocation()
হবে getLastKnownLocation()
যেমন জাভাতে ছোট ছোট অক্ষর দিয়ে শুরু হওয়া নামগুলি হবে যখন সি # পদ্ধতিতে নামগুলি বড় হাতের অক্ষর দিয়ে শুরু হয়।