问题描述
当我尝试使用RegionInfo.CurrentRegion
获取区域信息时,我总是收到“ US”字样。但是我的设备区域不同。
解决方法
您可以使用依赖项服务从android项目获取区域信息:
在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();
}
在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
是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,grantResults);
}
}