Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何以编程方式获取设备的电话号码_Android_Phone Number_Telephonymanager - Fatal编程技术网

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卡中,该手机号码不可检索。解决方案是什么?不使用棉花糖崩溃应用程序