Je veux obtenir le numéro de téléphone d'un contact par programmation en ne demandant que le nom, sans afficher l'activité de mes contacts.Puis-je récupérer un numéro de téléphone à partir de mes contacts sans ouvrir une intention?
Est-ce possible? et comment?
J'ai essayé le suivant mais je reçois une erreur d'autorisation, même si j'ai ma configuration d'autorisation dans le manifeste
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
ArrayList<String> contact_names = new ArrayList<String>();
if (cur.getCount() > 0)
{
while (cur.moveToNext())
{
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = "GIAGIA";
if (cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER.trim())).equalsIgnoreCase("1"))
{
if (name!=null){
//contact_names[i]=name;
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null);
while (pCur.moveToNext())
{
String PhoneNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(getBaseContext(),PhoneNumber ,Toast.LENGTH_LONG).show();
//i++;
break;
}
pCur.close();
pCur.deactivate();
// i++;
}else
{
Toast.makeText(getBaseContext(),"Does not exist",Toast.LENGTH_LONG).show();
}
}
}
cur.close();
cur.deactivate();
}
String[] contactList = new String[contact_names.size()];
for(int j = 0; j < contact_names.size(); j++){
contactList[j] = contact_names.get(j);
}
return contactList;
}
s'il vous plaît poster l'erreur que vous obtenez, aussi, 'demander seulement le name' - vous voulez demander à l'utilisateur le nom du contact? Et s'il y a deux contacts du même nom? – marmor