我想在屏幕上显示设备的电话号码。
在Xamarin.Android中代码是可行的。但我想在Xamarin.Forms中使用代码。 我已经搜索过,但没有找到任何结果。
Android.Telephony.TelephonyManager tMgr = (Android.Telephony.TelephonyManager)this.GetSystemService(Android.Content.Context.TelephonyService);
string mPhoneNumber = tMgr.Line1Number;
-I给予了许可: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可以是我的设备电话号码。
资源: Getting the number of the phone Xamarin.Android? https://developer.xamarin.com/api/type/Android.Telephony.TelephonyManager/
答案 0 :(得分:2)
定义您的抽象,Xamarin.Forms项目中的接口。
namespace YourApp
{
public interface IDeviceInfo
{
string GetPhoneNumber();
}
}
然后,您需要在每个平台中实施。 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;
}
}
}
最后,您可以使用DependencyService
在您的Xamarin.Forms项目中使用。
var deviceInfo = Xamarin.Forms.DependencyService.Get<TodoApp.IDeviceInfo>();
var number = deviceInfo.GetPhoneNumber();
在iOS上,由于安全限制,您无法获取所有者的电话号码。您可以查看此问题Programmatically get own phone number in iOS
基于此,您可能需要检查您的应用是在Android还是iOS上。
switch(Device.RuntimePlatform){
case "Android":
//you can
break;
case "iOS"
//You can't
break;
}