2012-03-31 18 views
6

Estoy desarrollando una aplicación de seguimiento gps en android. Ya terminé de mostrar el mapa n cosas. Ahora quiero hacer un botón en la parte superior que, al hacer clic, muestre los contactos. Luego, cuando seleccione el contacto, debería mostrarme su ubicación. Por favor, ayúdenme con esto. Gracias.cómo abro los contactos cuando hago clic en un botón definido en main.xml

+0

Bastante seguro de que esta es la misma pregunta: http://stackoverflow.com/questions/4992564/open-device-contacts-list-at-button-click-event – NotACleverMan

+0

gracias .. pero ¿por dónde define ese código. –

+0

http://stackoverflow.com/questions/9766263/getting-contact-number-using-content-provider-in-android/9883740#9883740 comprueba que esto te ayudaría –

Respuesta

16

Se puede configurar un evento de clic de los botones mediante el establecimiento de un OnClickListener en el botón con el siguiente código, y el uso de Intención para llamar la actividad ContactPicker:

button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent= new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); 

     startActivityForResult(intent, PICK_CONTACT); 

      } 
     }); 

y en onActivityResult() proceso de la URI de contacto para cargar los detalles de contacto.

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
    case (PICK_CONTACT) : 
     if (resultCode == Activity.RESULT_OK) { 
     Uri contactData = data.getData(); 
     Cursor c = managedQuery(contactData, null, null, null, null); 
     if (c.moveToFirst()) { 
      String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      // TODO Fetch other Contact details as you want to use 

     } 
     } 
     break; 
    } 
} 
11

Debe utilizar startActivityForResult

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, 1); 

Ver "get contact info from android contact picker" para más información.

+0

donde defino este código ... –

+1

+1 para usar 'ContactsContract.Contacts.CONTENT_URI' porque' Contacts.CONTENT_URI' está en desuso. – Darcy

0

tratar este código

Intent intent = new Intent(Intent.ACTION_DEFAULT, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, 1); 

Uso ACTION_DEFAULT en lugar de ACTION_PICK.

Buena suerte.

Cuestiones relacionadas