Disons que j'ai 100 appels dans mon journal des appels. Je veux trouver les contacts uniques (pas les numéros) qu'ils ont été appelés. Le problème est que si un contact a deux numéros de téléphone (par exemple pour Contact A j'ai un numéro pour la maison et un autre pour le mobile) je compterai ce contact deux fois!Android: Obtenir des contacts uniques appelés à partir du journal des appels
J'ai essayé ce qui suit. Je lis le journal des appels. Ensuite, pour chaque numéro du journal des appels que j'appelle la fonction personnalisée suivante:
private String getContactID (String number)
{
String contactID = "";
ContentResolver context = getContentResolver();
/// number is the phone number
Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));
String[] mPhoneNumberProjection = { PhoneLookup._ID };
Cursor cur = context.query(lookupUri,mPhoneNumberProjection, null, null, null);
try
{
if (cur.moveToFirst())
{
contactID = cur.getString(0);
return contactID;
}
}
finally
{
if (cur != null)
cur.close();
}
return contactID;
}
j'ai donc alors un CallLog avec ids de contact et l'horodatage de l'appel et à l'aide d'un ensemble que je reçois l'unique, ... ci-dessus le code fonctionne bien mais la performance est très mauvaise! Je l'ai essayé dans un nouveau Google Nexus 4 et cela prend environ 1600 msec! Je ne veux pas penser à d'anciens téléphones intelligents ...
Des suggestions?
Cette question est à considérer avec votre problème http://stackoverflow.com/questions/8654904/group-by-in-contentresolver-in-ice-cream-sandwich –