Android 如何以编程方式获取设备的电话号码
我正在尝试使用以下方法获取电话号码:Android 如何以编程方式获取设备的电话号码,android,phone-number,telephonymanager,Android,Phone Number,Telephonymanager,我正在尝试使用以下方法获取电话号码: private String getMyPhoneNumber() { TelephonyManager mTelephonyMgr; mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); //String imsi = mTelephonyMgr.getSubscriberId(); String phnNo = mT
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”而不是电话号码。
是否有其他方法解决此问题?使用以下代码:
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
在AndroidManifest.xml中,授予以下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
但请记住,此代码并不总是有效的,因为手机号码取决于SIM卡和网络运营商/手机运营商
另外,请尝试签入电话-->设置-->关于-->电话标识,如果您能够在那里查看电话号码,则从上述代码中获取电话号码的概率更高。如果您无法在“设置”中查看电话号码,则无法通过此代码获取 我想如果你的号码必须储存在你的sim卡中,这个密码会给你号码,或者按照我的想法,它不会被找到。您认为nisha?号码必须由网络提供商自动保存。当我们试图在“设置”中手动保存电话号码时(但很少有手机允许!!),我们无法检索电话号码!:(根据我们在一个与获取电话号码相关的项目中工作时的观察,我们发现在旧SIM卡(在移动电话号码便携之前)中,该号码在大多数情况下都可用。但在新SIM卡中,该手机号码不可检索。解决方案是什么?不使用棉花糖崩溃应用程序