2013-04-29 72 views
3

我想從我的android應用程序中獲取並顯示我的手機的電話號碼,它在模擬器中工作,但不在真實設備(手機)上。無法從我的android應用獲取電話號碼?

任何人都可以告訴我原因嗎?

這裏是源

AndroidMenuActivity.java

public class AndroidMenusActivity extends Activity { 
    TextView txt; 
    String mphone; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    txt = (TextView)findViewById(R.id.txtVw_phonenumber); 

    TelephonyManager tmgr = 
      (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

    mphone = tmgr.getLine1Number(); 

    txt.setText(mphone); 

    System.out.println("*******************************" + mphone); 
    } 
} 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.androidhive.androidmenus" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 


    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".AndroidMenusActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 
+0

請問你的真實設備具有SIM卡? – Lucifer 2013-04-29 06:39:23

+0

是......... ofcourse – Nakshatran 2013-04-29 06:40:00

+0

CDMA手機沒有SIM卡。 – 2013-04-29 06:51:46

回答

0

獲取電話號碼是唯一可能的CDMA設備上。在GSM設備上,您將能夠獲得電話號碼。

TelephonyManager telephone=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); 
    String mPhoneNumber = telephone.getLine1Number(); 
+0

是的,我需要只顯示電話號碼..如何? – Nakshatran 2013-04-29 06:39:17

+0

你有cdma設備嗎?那麼請參閱最新的答案。 – Rohit 2013-04-29 06:42:52

+0

電話號碼=電話號碼? – 2013-04-29 06:50:54

1

沒有保證的解決了這個問題,因爲電話號碼不是物理存儲上的所有SIM卡,或從網絡到手機廣播。在一些需要物理地址驗證的國家尤其如此,號碼分配僅在事後進行。電話號碼分配發生在網絡上 - 可以在不更改SIM卡或設備的情況下進行更改(例如,這是如何支持移植)。我知道這很痛苦,但最有可能的最佳解決方案就是要求用戶輸入一次他/她的電話號碼並存儲它。請參閱here

1
TelephonyManager tmgr = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 

您可以使用應用程序上下文進行檢查嗎?

+0

沒有它不顯示任何 – Nakshatran 2013-04-29 06:50:49

+0

相同的結果.... – Nakshatran 2013-04-29 07:00:30

+0

得到所有設備的空值 – 2014-01-31 12:03:36

0

在GSM手機,我們卻不能做這個事情。不過我們可以通過找到網絡信息TelephonyManager 它給出了一個空字符串,因爲電話號碼是不是在sim_card內存包埋。您可以提取sim_card 序列號,如果您有其他資源可以實現此目的,則可以映射電話號碼。

你可以做以下..

public String getSimSerialNumber() 

在API級別1

需要權限:READ_PHONE_STATE

,你也可以獲取的MCC和MNC碼 SIM的提供者。

如果你在電信運營商的鏈接,你可以算out..very容易..

+0

你可以給我一個atlest樣品來源對你的建議 – Nakshatran 2013-04-29 06:59:56

+0

檢查我編輯的答案.. – 2013-04-29 07:16:36

相關問題