2011-08-19 104 views
1

我想從使用TelephonyManager的android設備獲取電話號碼。獲取Android設備的電話號碼

什麼是READ_PHONE_STATE?我將它包含在清單文件中。但仍然是拋出異常。

清單文件,

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="abc.sample" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="7"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:permission="android.permission.READ_PHONE_STATE"> 
    <activity android:name=".TrakkitActivityMain" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".TermsOfServiceActivity" android:label="Terms Of Service"></activity> 
    <activity android:name=".CategoryMainActivity"></activity> 
    <activity android:name=".ExpensesMainActivity"></activity> 
    <activity android:name=".CategoryDefineActivity"></activity> 
    <activity android:name=".ExpensesDefineActivity"></activity> 
    <activity android:name=".CategoryPieChartActivity"></activity><receiver android:name=".receivers.AlarmReceiver"></receiver> 
    <activity android:name=".ChartDisplayViewActivity"></activity> 
    <activity android:name=".LandingPageActivity"></activity> 
    <activity android:name=".SpeedOMeterViewActivity"></activity> 
    <activity android:name=".FeedbackActivity"></activity> 
    <activity android:name=".CategoryDeleteActivity"></activity> 


</application> 

TelephonyManager telephonyManager = (TelephonyManager) context 
      .getSystemService(Context.TELEPHONY_SERVICE); 
    String phoneNo = telephonyManager.getLine1Number(); 

它返回空PHONENO = 「」

回答

1

據我之爲知之,這是不可能獲得的電話號碼。 SDK提供了這些方法,但大多數情況下它將返回null。

+0

這是可能的,但正如你在Roflcoptr的回答下你所說的那樣,它並不總是可靠的。 –

2

我認爲這段代碼應該可以工作。至少它在我的手機上。

private String getMyPhoneNumber(){ 
     TelephonyManager mTelephonyMgr; 
     mTelephonyMgr = (TelephonyManager) 
      getSystemService(Context.TELEPHONY_SERVICE); 
     return mTelephonyMgr.getLine1Number(); 
    } 

    private String getMy10DigitPhoneNumber(){ 
     String s = getMyPhoneNumber(); 
     return s.substring(2); 
    } 
+1

是的,它應該如何工作,但是OP應該仔細測試,因爲我已經閱讀了許多關於'getLine1Number()'的評論,這些評論有時會返回空值或最初存儲在SIM卡中的電話號碼。你知道嗎,一張SIM卡並不總是堅持一個特定的電話號碼,而是取決於移動運營商 –