Obtenir des Contacts numéro de téléphone mobile seulement
Il y a eu plusieurs questions sur DONC en ce qui concerne l'obtention de Contacts nombres en utilisant les Contacts de l'API, mais je voudrais savoir si il existe un moyen d'identifier le nombre récupéré est un numéro de mobile.
Le code suivant est souvent montré comme un moyen d'obtenir un Contact, numéros de téléphone, qu'il obtient une liste d'un ou plusieurs numéros de téléphone:
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();
}
}
Tout, cela fonctionne bien, est-il possible de les identifier facilement que le numéro de téléphone mobile est de type (à l'exception de la tentative de mise en correspondance du modèle avec la Regex).
Je présume qu'il doit être une pièce de données, de sorte que les applications natives peut classer le numéro de téléphone - comme dans l'image ci-dessous:
OriginalL'auteur John J Smith | 2011-08-18
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur un article de blog qui donne une très bonne explication à l'aide de la ContactsContract api ici.
Donc, dans mon exemple ci-dessus, j'ai changé une partie de mon code ci-dessus à ceci:
Cette boucle autour de tous les téléphones pour une personne de contact et si le type est le Téléphone.TYPE_MOBILE puis il prend à celui-ci.
Espère que cela aide quelqu'un avec le même problème que j'ai eu.
OriginalL'auteur John J Smith
La requête d'origine du curseur = managedQuery(intention.getData(), la projection, sélection, null, null); doit être capable de gérer filtre pour vous. Je suis en train de faire la même chose. Je vais poster mes résultats. Si quelqu'un sait comment faire cela à l'aide de la sélection de la clause dans le troisième paramètre. J'aimerais connaître la réponse.
OriginalL'auteur musterjunk