提问人:MobileDev 提问时间:11/16/2023 更新时间:11/17/2023 访问量:39
MAUI Essentials 获取移动运营商名称
MAUI Essentials Get Mobile Carrier Name
问:
我们目前正在使用 .NET 6 构建一个移动应用,并正在寻找一种方法来检测设备正在使用的移动运营商的名称。
这是否可以通过 MAUI Essentials 实现?
如果不是,是否可以使用本机 iOS 和 Android API?似乎在 iOS 16 中,Apple 对此信息的可用性进行了一些更改。
答:
0赞
Jessie Zhang -MSFT
11/17/2023
#1
可以参考以下步骤,在 Xamarin.Forms 上将平台代码作为依赖项服务调用。
步骤1:实现获取 Android 和 iOS 运营商信息的函数:
对于Android:
将以下代码添加到 .MainActivity
public static MainActivity Instance { get; private set; }
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Instance = this;
}
创建帮助程序类以获取运营商信息。
public static class GetCarrierHelper
{
public static string GetCarrierName()
{
TelephonyManager manager = MainActivity.Instance.GetSystemService(Context.TelephonyService) as TelephonyManager;
String carrierName = manager.NetworkOperatorName;
return carrierName;
}
}
对于 iOS,您需要创建以下帮助程序类:
public static class GetCarrierHelper
{
public static string GetCarrierName()
{
using (var info = new CTTelephonyNetworkInfo())
{
CTCarrier cTCarrier = (CTCarrier)info.ServiceSubscriberCellularProviders.ValueForKey((NSString)info.DataServiceIdentifier);
// You could get the CTCarrier according to DataServiceIdentifier key, then return the CarrierName. CTCarrier and its CarrierName property was deprecated
return cTCarrier.CarrierName;
}
}
}
步骤2:调用平台代码:
private async void Button_Clicked(object sender, EventArgs e)
{
#if ANDROID
var name = MauiApp9.Platforms.Android.GetCarrierHelper.GetCarrierName();
#elif IOS
var name = MauiApp9.Platforms.iOS.GetCarrierHelper.GetCarrierName();
#endif
}
如需更多信息,您可以查看 调用平台代码。
评论
0赞
MobileDev
11/17/2023
谢谢我可以尝试一下,我认为 iOS 上的问题可能是 CTCarrier 已被 Apple 弃用。
0赞
Jessie Zhang -MSFT
11/21/2023
为此,您可以检查 iOS 16 CTCarrier 弃用。
评论