我需要一種方法來捕獲Android設備的電話號碼,以便將其發送回我的web api進行處理。設備電話號碼
我讀過有關的問題和inconsistencies與getLine1Number功能,所以我的問題是這樣的,在那裏getLine1Number
任何編程的替代品或者是檢索裝置的電話號碼的唯一可用的方法?
要清楚,我不是在尋找一個UUID,這是一個手機應用程序,我需要用戶的電話號碼進行數據關聯。
我需要一種方法來捕獲Android設備的電話號碼,以便將其發送回我的web api進行處理。設備電話號碼
我讀過有關的問題和inconsistencies與getLine1Number功能,所以我的問題是這樣的,在那裏getLine1Number
任何編程的替代品或者是檢索裝置的電話號碼的唯一可用的方法?
要清楚,我不是在尋找一個UUID,這是一個手機應用程序,我需要用戶的電話號碼進行數據關聯。
您可以使用getLine1Number()。它將返回第1行的電話號碼字符串,例如GSM電話的MSISDN。如果不可用,則返回null。
這裏有一個例子:
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String number = tm.getLine1Number();
它要求要在AndroidManifest.xml文件添加READ_PHONE_STATE權限。
這是一個代碼片段,以獲得電話號碼:
....
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" />
我認爲他正在尋找一種方法來檢測電話號碼不檢索聯繫人列表。 –