У SO было несколько вопросов относительно получения номеров Контактов с помощью 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).
Я подозреваю, что должна быть связанная часть данных, чтобы родные приложения могли классифицировать телефонный номер - как на рисунке ниже: