2009-12-13 33 views
6

¿Alguien puede arrojar luz sobre cómo obtener la lista de contactos de Android ?.Android Lista de contactos

Solo quiero obtener la misma lista que en la aplicación del marcador. Pero estoy recibiendo un montón de contactos que no están en la lista de marcadores con el siguiente código.

ContentResolver cr = getContentResolver(); 
Cursor cursor = cr.query(Contacts.People.CONTENT_URI, null, null, null, Contacts.ContactMethods.DEFAULT_SORT_ORDER); 
startManagingCursor(cursor); 

Gracias de antemano.

Respuesta

2

Lo que tienes parece estar bien. ¿Podrían dar más detalles sobre "obtener muchos contactos que no están en la lista de marcadores"? ¿Es que Android está inventando gente? ¿O es que está viendo personas con direcciones de correo electrónico pero sin números de teléfono (que, por lo tanto, podrían no aparecer en el marcador)?

Tenga en cuenta que Contacts.People es para Android 1.6 y versiones posteriores. Ese proveedor está en desuso, comenzando con Android 2.0, reemplazado por el conjunto de proveedores ContactsContract.

+0

imagino un montón de desarrolladores no utilizará ContactsContract porque quieren 1,6 compatibilidad ... – Eno

0

Bien, gracias por la respuesta primero. Solo para arrojar luz sobre esto.

Solo quería recibir correos electrónicos solo para los contactos de mi teléfono. El grupo "MyContacts". Vi que este es el grupo que utiliza la Actividad de la Lista de contactos.

que acabamos de hacer somethig así:

c = cr.query(myGroupUri, mEmailsProjection, null, null, null); 
.... 

c.close(); 

c = cr.query(
    Contacts.ContactMethods.CONTENT_URI, 
     mContactsProjection, contactIds, null, null 
); 
.... 
c.close(); 

Sólo preguntó el grupo primero y luego la mesa de correos electrónicos.

6

probar este fragmento:

import android.app.ListActivity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.CommonDataKinds.Phone; 
import android.widget.SimpleCursorAdapter; 

public class ContactList extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER}, null, null, null); 

     startManagingCursor(cursor); 

     String[] from = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER}; 

     int[] to = new int[] { R.id.name_entry, R.id.number_entry}; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_entry, cursor, from, to); 
     this.setListAdapter(adapter); 
    } 
} 

archivo XML es:

list_entry.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="6dip"> 
     <TextView 
      android:id="@+id/name_entry" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     android:textSize="18dip"/> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/number_entry" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     android:textSize="18dip"/> 
    </LinearLayout> 
+2

Requiere <-utiliza el permiso android: name = "androide. permission.READ_CONTACTS "> de lo contrario es útil. –

+1

startManagingCursor está en desuso ... – drulabs

+0

@KKD: ¿Qué debería reemplazarlo? –

1

This consiste en la realización básica de la lista de contactos Actividad androide.

0

trate de usar la intención de ir a la lista de contactos

  startActivityForResult(new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI),1);} 
Cuestiones relacionadas