Xamarin.Android에서이 문제가 발생했습니다.
Location location = locationManager.GetLastKnownLocation(provider);
null 값을 반환했습니다. 코드를 확인한 결과 ACCESS_COARSE_LOCATION에 대한 권한을 방금 요청했음을 알게되었습니다. ACCESS_FINE_LOCATION에 대한 권한을 요청하는 코드를 추가했는데 이제는 null을 반환하지 않았습니다. 내 코드는 다음과 같습니다.
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 #)에서 온 모든 사람이 유용하다고 생각하는 경우. Java 또는 안드로이드 스튜디오의 코드는 같은 구문이 변경 약간의 유사한 옆 널빤지 될 GetLastKnownLocation()
것입니다 getLastKnownLocation()
C에서 # 방법 이름은 대문자 문자로 시작하면서 자바에서 메소드 이름은 소문자로 시작한다.