如何解决如何在Xamarin表单中获取设备区域信息
当我尝试使用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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。