如何在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;
        }
    }
}

mainContextMainActivity中的静态属性:

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);
    }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...