Было задано несколько вопросов относительно получения номеров контактов с помощью API контактов, но я хотел бы знать, есть ли способ идентифицировать, что номер, полученный, является мобильным номером.
Следующий код часто отображается как способ получить номера контактных телефонов, так как он получает список из одного или нескольких телефонных номеров:
String[] projection = {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1";
Cursor cursor = null;
Cursor phones = null;
try
{
cursor = managedQuery(intent.getData(), projection, selection, null, null);
while (cursor.moveToNext())
{
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
String pdata = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
Log.v("DATA",pdata);
}
}
}
catch (NullPointerException npe)
{
Log.e(TAG, "Error trying to get Contacts.");
}
finally
{
if (phones != null)
{
phones.close();
}
if (cursor != null)
{
cursor.close();
}
}
В то время как это работает нормально, есть ли способ легко определить, что номер телефона является мобильным типом (кроме попытки сопоставления шаблонов с Regex).
Я подозреваю, что должен быть связанный фрагмент данных, так что родные приложения могут классифицировать номер телефона - как на рисунке ниже: