Im obtenir montrant des contacts sur un RecyclerView
et au-dessous du code extraient contactsmontrant des contacts en filtrant ACCOUNT_TYPE colonne de RawContacts
Uri Contact_URI=ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
return new CursorLoader(getActivity(),Contact_URI,null,null,null,Build.VERSION.SDK_INT
>= Build.VERSION_CODES.HONEYCOMB ?
ContactsContract.Contacts.DISPLAY_NAME_PRIMARY :
ContactsContract.Contacts.DISPLAY_NAME+ "ASC");
mais certains contacts sont représentés plusieurs fois alors j'ai décidé de filtrer les contacts sur la colonne account_type
. Ci-dessous, le filtre de code basé sur account_type
if(list.getString(list.getColumnIndex("account_type")).equals("Local Phone Account") || list.getString(list.getColumnIndex("account_type")).equals("SIM Account")) {
textView.setText(list.getString(list.getColumnIndex(Build.VERSION.SDK_INT
>= Build.VERSION_CODES.HONEYCOMB ?
ContactsContract.Contacts.DISPLAY_NAME_PRIMARY :
ContactsContract.Contacts.DISPLAY_NAME)));
number.setText(list.getString(list.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
number.setText(list.getString(list.getColumnIndex("account_type")));
}
problème est de account_type
valeurs pour les contacts SIM et du téléphone varie d'un appareil à. En Samsung GT-l9082
donne des valeurs pour sim « compte Sim » et pour le téléphone « compte de téléphone local » mais quand je l'ai testé sur Galaxy J5
il montre des valeurs différentes contre account_type
pour contacts.I sim et téléphone veulent afficher uniquement Sim et contacts du téléphone
Merci pour votre réponse. J'ai aussi pensé à filtrer les contacts mais 'CursorLoader' renvoie un' Cursor' et 'CursorLoader.query()' s'exécute sur le thread NON-UI. donc ça n'a pas d'importance. Bien, je suis d'accord sur l'utilisation de HashMaps. Je l'accepte comme réponse –
Vous pouvez exécuter la requête et construire le HashMap sur un thread non-UI vous-même (en utilisant un Thread), puis passer le HashMap à un adaptateur pour afficher les données à l'écran – marmor
Je n'ai récupéré que les numéros de téléphone interroger directement 'ContactsContract.Data' et filtrer sur' Data.MIMTYPE = Phone.CONTENT_ITEM_TYPE '. il ne me donne que les numéros de téléphone des contacts, qu'ils appartiennent à SIM ou Phone ou à un compte Email –