我正在尝试使用以下代码获取系统电话号码
TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();
但它不起作用。
在我的手机中,我使用
设置->关于手机-->状态-电话号码
有没有我可以使用的简单应用程序?,我在土耳其写信。sim卡有区别吗?
你可以尝试这样的事情。它完美地工作。
public String getPhoneNumber(Context context) {
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String num = mTelephonyMgr.getLine1Number();
return fillPhoneNumber(num);
}
private String fillPhoneNumber(String num) {
try{
if (num != null && num.length() > 0) {
if (num.length() >= 9) {
num = num.replaceAll("\\D", "");
if (num.substring(0, 1).equals("8")) {
num = "+3" + num;
} else if (num.substring(0, 1).equals("0")) {
num = "+38" + num;
} else if (num.substring(0, 1).equals("3")) {
num = "+" + num;
}
}
return num;
}
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
注意: 并非所有电话都会返回电话号码。
并非所有电信运营商都将电话号码存储在 SIM 卡上。仅当设备中的 SIM 卡上存储有手机号码时,您使用的方法才有效。
如果您在手机设置中看不到您的电话号码,则表示它没有存储在 SIM 卡上。如果您绝对需要,您必须手动要求用户将其输入您的应用程序。没有其他办法。
没有确定的方法可以找到 MSISDN。上述方法仅在 SIM 已存储 MSISDN 时有效。其他解决方法是从 facebook 检索号码。它也可能会或可能不会起作用。唯一确定的方法是使用一些 SMS 网关提供商(例如http://trumpia.com )创建帐户,然后将 SMS 发送到免费号码,然后调用 API 检索 MSISDN。