Xamarin.Forms;在屏幕上显示设备上我的 SIM 卡的电话号码

2024-04-03

我想在屏幕上显示我设备的电话号码。

在 Xamarin.Android 中,代码可以正常工作。但我想使用 Xamarin.Forms 中的代码。 我已经搜索过,但没有找到任何结果。

Android.Telephony.TelephonyManager tMgr = (Android.Telephony.TelephonyManager)this.GetSystemService(Android.Content.Context.TelephonyService);
string mPhoneNumber = tMgr.Line1Number;

-我授予权限:READ_PHONE_STATE

   <StackLayout>
        <Button FontSize="Large" Text="Telefon Numarasını Al" BackgroundColor="Blue" x:Name="btnNumaraAl" Clicked="btnNumaraAl_Clicked"></Button>
        <Label FontSize="Large" BackgroundColor="Red" x:Name="txtPhone" VerticalOptions="Center" HorizontalOptions="Center"></Label>
    </StackLayout>

当我单击 btnNumaraAl 时,txtPhone.Text 可以是我的设备电话号码。

资源 :获取 Xamarin.Android 手机号码? https://stackoverflow.com/questions/36033428/getting-the-number-of-the-phone-xamarin-android https://developer.xamarin.com/api/type/Android.Telephony.TelephonyManager/ https://developer.xamarin.com/api/type/Android.Telephony.TelephonyManager/


  1. 定义您的抽象,即 Xamarin.Forms 项目中的接口。

    namespace YourApp
    {
      public interface IDeviceInfo
      {
        string GetPhoneNumber();
      }
    }
    
  2. 然后,你需要在每个平台上实现。 Android 的实现应该是这样的。

    using Android.Telephony;
    using TodoApp;
    using Xamarin.Forms;
    [assembly:Xamarin.Forms.Dependency(typeof(YourApp.Droid.DeviceInfo))]
    namespace YourApp.Droid
    {
        public class DeviceInfo: IDeviceInfo
        {
            public string GetPhoneNumber()
            {
                var tMgr = (TelephonyManager)Forms.Context.ApplicationContext.GetSystemService(Android.Content.Context.TelephonyService);
                return tMgr.Line1Number;
            }
        }
    }
    
  3. 最后,您可以在 Xamarin.Forms 项目中使用DependencyService.

     var deviceInfo = Xamarin.Forms.DependencyService.Get<TodoApp.IDeviceInfo>();
     var number = deviceInfo.GetPhoneNumber();
    

需要指出的是,由于安全限制,在 iOS 上您无法获取所有者的电话号码。你可以回顾一下这个问题在 iOS 中以编程方式获取自己的电话号码 https://stackoverflow.com/questions/193182/programmatically-get-own-phone-number-in-ios

基于此,您可能需要检查您的应用程序是在 Android 还是 iOS 上。

switch(Device.RuntimePlatform){
  case "Android":
     //you can
     break;
  case "iOS"
     //You can't
     break;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin.Forms;在屏幕上显示设备上我的 SIM 卡的电话号码 的相关文章

随机推荐