2013-03-05 91 views
-1

我想下面的代碼來獲得系統的電話號碼Android應用程序來獲得系統的電話號碼

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
mPhoneNumber = tMgr.getLine1Number(); 

但它無法正常工作。

在我的手機,我用

設置 - >關於手機 - >狀態,電話號碼

有一個簡單的應用程序可以使用嗎? ,我從土耳其寫作。 SIM卡是否有所作爲?

+1

如果電話號碼在狀態中未知,則問題可能與SIM卡有關。如果SIM卡中不知道電話號碼,那麼Android或您的Android應用程序無關緊要。如果可能,我建議您嘗試使用另一張SIM卡,並根據結果查看您的問題。 – 2013-03-05 12:28:56

回答

0

你可以嘗試這樣的事情。它完美的作品。

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; 
} 

注:並非所有手機返回一個電話號碼。

0

並非所有的電信運營商都將電話號碼存儲在SIM卡上。您使用的方法僅適用於設備中的SIM卡上存儲手機號碼的情況。

如果您在移動設置中看不到您的電話號碼,則表示它不存儲在SIM卡上。如果您絕對需要,您必須手動要求用戶將其輸入到您的應用程序中。沒有其他辦法。

0

沒有確定的方法來查找MSISDN。上述方法僅適用於SIM存儲了MSISDN。其他解決方法是從Facebook檢索號碼。它也可能會或可能不會工作。 唯一可靠的拍攝方式是與http://trumpia.com等SMS網關提供商創建帳戶,然後發送短信到免費電話號碼,然後調用API來檢索MSISDN。