Bonjour, je souhaite choisir un contact parmi les intentions de notre carnet de contacts par défaut. J'ai essayé plusieurs façons de le faire. Veuillez trouver le code ci-dessous. Le problème avec tous ces codes est qu’ils ouvrent un écran de documents intermédiaire avec peu d’options pour que l’utilisateur puisse sélectionner un contact et ouvre le répertoire.
private void openContactIntent() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
startActivityForResult(intent, REQ_CONTACT_DIRECTORY);
}
J'ai aussi essayé
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
et
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
J'ai aussi eu le même problème. Enfin, je me suis débarrassé de l'écran du sélecteur intermédiaire en utilisant le code ci-dessous,
Intent i=new Intent(Intent.ACTION_PICK);
i.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(i, SELECT_PHONE_NUMBER);
Dans onActivityResult
obtenir le numéro de téléphone ci-dessous
if (requestCode == SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
// Get the URI and query the content provider for the phone number
Uri contactUri = data.getData();
String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor cursor = getContext().getContentResolver().query(contactUri, projection,
null, null, null);
// If the cursor returned is valid, get the phone number
if (cursor != null && cursor.moveToFirst()) {
int numberIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String number = cursor.getString(numberIndex);
// Do something with the phone number
...
}
cursor.close();
}
Essayez le code ci-dessous pour choisir un contact:
Intention contactPickerIntent = nouvelle Intention (Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI). startActivityForResult (contactPickerIntent, RESULT_PICK_CONTACT);
Vous pouvez récupérer les informations requises dans onActivityResult comme suit:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case RESULT_PICK_CONTACT:
Cursor cursor = null;
try {
String phoneNo = null;
String name = null;
Uri uri = data.getData();
cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int nameIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
phoneNo = cursor.getString(phoneIndex);
name = cursor.getString(nameIndex);
Log.e("Name and Contact number is",name+","+phoneNo);
} catch (Exception e) {
e.printStackTrace();
}
break;
}
} else {
Log.e("Failed", "Not able to pick contact");
}
}
Cela fonctionne pour moi:
Intent it= new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(it, requestCode);
private static final int RESULT_PICK_CONTACT1= 1;
public void pickContact1 (View v)
{
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT1);
}
@Override
protected void onActivityResult ( int requestCode, int resultCode, Intent data){
if (resultCode == RESULT_OK) {
switch (requestCode) {
case RESULT_PICK_CONTACT1:
contactPicked1(data);
break;
}
} else {
Log.e("SetupActivity", "Failed to pick contact");
}
}
private void contactPicked1 (Intent data){
Cursor cursor = null;
try {
String phoneNo = null;
String name = null;
Uri uri = data.getData();
cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
name = cursor.getString(nameIndex);
phoneNo = cursor.getString(phoneIndex);
ed11.setText(name);
ed12.setText(phoneNo);
} catch (Exception e) {
e.printStackTrace();
}
}
Cela fonctionnera sûrement.
Try This link may to be help you
http://stackandroid.com/tutorial/contact-picker-using-intent-Android-tutorial/