Było kilka pytań dotyczących SO dotyczących uzyskiwania numerów kontaktów za pomocą interfejsu API kontaktów, ale chciałbym się dowiedzieć, czy istnieje sposób na określenie, czy pobrany numer jest numerem telefonu komórkowego.Otrzymuj tylko numer telefonu komórkowego
Poniższy kod jest często wyświetlany jako sposób, aby uzyskać numery telefonów kontaktu, tak jak robi się lista jednego lub więcej numerów telefonów:
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();
}
}
Chociaż to działa dobrze, czy jest jakiś sposób, aby łatwo rozpoznać, że numer telefonu jest typu mobilnego (poza próbą dopasowania wzoru do Regex).
Podejrzewam, że musi być powiązany fragment danych, tak że natywne aplikacje można zaklasyfikować numer telefonu - jak na zdjęciu poniżej:
proste i doskonałe rozwiązanie +1 –