【发布时间】:2019-06-20 08:00:28
【问题描述】:
我正在寻找一种可行且未被弃用的解决方案,用于在任何 Android 手机上获取电话号码。
我已经尝试了在 StackOverflow 上找到的不同方法,但大多数都不起作用,因为大多数都是从设备信息中读取电话号码。我的设备和许多其他设备没有存储在 SIM 卡中的号码,因此在使用该方法时,它会返回 null 或空字符串。
是否有其他方法可以获取电话号码,例如使用您登录的 Google 帐户并检查是否有与之关联的号码或来自 Whatsapp 的号码?
我已经尝试过的东西。
IList<string> numeri = new List<string>();
//RETURNS THE NUMBER ON EMULATOR, NOTHING ON MY DEVICE
TelephonyManager telephonyManager = Application.Context.GetSystemService(TelephonyService) as TelephonyManager;
numeri.Add(telephonyManager.Line1Number);
//RETURNS THE NUMBER ON EMULATOR, NOTHING ON MY DEVICE
SubscriptionManager subscriptionManager = (SubscriptionManager)GetSystemService(TelephonySubscriptionService);
IList<SubscriptionInfo> subsInfoList = subscriptionManager.ActiveSubscriptionInfoList;
foreach (SubscriptionInfo item in subsInfoList) {
numeri.Add(item.Number);
}
//ACCOUNTS ARRAY IS EMPTY ON EMULATOR AND MY DEVICE
Java.Util.Regex.Pattern pattern = Patterns.Phone;
Account[] accounts = AccountManager.Get(this).GetAccounts();
foreach (Account account in accounts) {
if (pattern.Matcher(account.Name).Matches()) {
numeri.Add(account.Name);
}
}
我希望有人可以帮助我解决这个问题。谢谢。
编辑
我决定使用设备的 IMEI,对于我需要做的事情,我不一定需要电话号码。
TelephonyManager telephonyManager = Application.Context.GetSystemService(TelephonyService) as TelephonyManager;
string IMEIDevice = telephonyManager.Imei;
编辑以删除可能的重复消息。谢谢大家。
【问题讨论】:
-
提示用户输入,以防他们不想让你拥有它?
-
我已经考虑过让用户输入他的电话号码,但我想要一种更自动化的方法。对于权限,应用程序会询问您是否要授予该权限,因此用户没有义务向我提供他的号码。最后一件事,它是我公司的内部应用程序,电话号码将用于向特定用户发送自定义通知。
-
现在我正在尝试从联系人列表中获取电话号码,因为在大多数手机上都有一个“我”联系人,但我认为它不会总是有效,因为它不是有必要设置该联系人,以便用户可以将其留空...
标签: c# xamarin.android