2013-08-19 105 views
0

我需要一種方法來捕獲Android設備的電話號碼,以便將其發送回我的web api進行處理。設備電話號碼

我讀過有關的問題和inconsistenciesgetLine1Number功能,所以我的問題是這樣的,在那裏getLine1Number任何編程的替代品或者是檢索裝置的電話號碼的唯一可用的方法?

要清楚,我不是在尋找一個UUID,這是一個手機應用程序,我需要用戶的電話號碼進行數據關聯。

回答

1

您可以使用getLine1Number()。它將返回第1行的電話號碼字符串,例如GSM電話的MSISDN。如果不可用,則返回null。

這裏有一個例子:

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number(); 

它要求要在AndroidManifest.xml文件添加READ_PHONE_STATE權限。

1

這是一個代碼片段,以獲得電話號碼:

.... 
private final static String PHONE = "phone"; 
... 

Map<String, String> contactDataMap = new HashMap<String, String>(); 

    ContentResolver cr = context.getContentResolver(); 

    Uri contactData = data.getData(); 
    //Cursor cursor = managedQuery(contactData, null, null, null, null); 
    Cursor cursor = cr.query(contactData, null, null, null, null); 
    cursor.moveToFirst(); 
    String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
    String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

    contactDataMap.put(NAME, (name != null)?name:""); 


    if (Integer.parseInt(cursor.getString(
      cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
     Cursor pCur = cr.query(
           ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
           null, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
           new String[]{id}, 
           null); 

     while (pCur.moveToNext()) { 
      String number = pCur.getString(pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

      contactDataMap.put(PHONE, (number != null)?number:""); 
      break; // ? we want only 1 value 
     } 
     pCur.close(); 
    } 

通過這種方式,您可以獲取電話號碼。請確保您有權限:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+1

我認爲他正在尋找一種方法來檢測電話號碼不檢索聯繫人列表。 –