我正在尝试使用以下方法获取电话:
private String getMyPhoneNumber() {
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//String imsi = mTelephonyMgr.getSubscriberId();
String phnNo = mTelephonyMgr.getLine1Number();
if (phnNo == null) {
phnNo = getNoFromWatsApp();
}
return phnNo;
}
private String getNoFromWatsApp(){
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
String phoneNumber = "";
for (Account ac : accounts) {
String acname = ac.name;
String actype = ac.type;
// Take your time to look at all available accounts
if(actype.equals("com.whatsapp")) {
phoneNumber = ac.name;
}
}
return phoneNumber;
}
但每次我得到一个空电话号码。我甚至试图从WhatsApp获得电话号码,但它正在返回“WhatsApp”而不是电话号码。 有没有其他方法可以解决这个问题?
答案 0 :(得分:33)
使用以下代码:
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
在AndroidManifest.xml中,授予以下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
但请记住,此代码并不总是有效,因为手机号码取决于SIM卡和网络运营商/手机运营商。
另外,请尝试检入 电话 - &gt;设置 - &gt;关于 - &gt;电话身份 ,如果您能够在那里查看号码,则从上面的代码获取电话号码的概率更高。如果您无法在设置中查看电话号码,那么您将无法通过此代码获取!