When I try to get regional info using RegionInfo.CurrentRegion I'm always getting "US". But my device region is different.
When I try to get regional info using RegionInfo.CurrentRegion I'm always getting "US". But my device region is different.
You can use dependency service to get region info from android project:
In Xamarin.forms:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
IDeviceLocaleService service = DependencyService.Get<IDeviceLocaleService>();
var region = service.getLocalRegion();
Console.WriteLine(region);
}
}
public interface IDeviceLocaleService {
string getLocalRegion();
}
And in Android.project:
[assembly: Dependency(typeof(DeviceLocaleService))]
namespace App347.Droid
{
public class DeviceLocaleService : IDeviceLocaleService
{
public string getLocalRegion()
{
var locale = MainActivity.mainContext.Resources.Configuration.Locale;
return locale.Country;
}
}
}
mainContext is a static property in MainActivity:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
public static Context mainContext;
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
mainContext = this.ApplicationContext;
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}