13

Estoy trabajando en una aplicación Android Honeycomb (v3.0) que tiene el requisito de mostrar TODOS los contactos almacenados en la cuenta de Google que está registrada en el dispositivo. Uno de los problemas que tengo es que solo puedo recuperar los contactos que están disponibles en "Mis contactos", "Destacados en Android" y "Otros contactos". También me gustaría poder recuperar contactos del "Directorio". Creo que la sección "Directorio" es una función proporcionada por Google a organizaciones y empresas que desean proporcionar a otros un directorio de todos los miembros/empleados dentro de sus dominios. Por favor, vea la siguiente imagen:Android 3.0 - Cómo recuperar TODOS los contactos a través de ContactsContract

Directory

Hasta ahora, tengo la siguiente línea en mi archivo de manifiesto:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 

He intentado usar este código:

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
while (cursor.moveToNext()) { 
    String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
} 
cursor.close(); 

En mi caso, "Mis contactos" y "Destacados en Android" están vacíos. Sin embargo, se obtiene el (1) contacto en "Otros contactos". Sin embargo, el "Directorio" contiene cientos de contactos que no se recuperan.

Mi pregunta: ¿Hay alguna manera de asegurarse de que los contactos en el "Directorio" también se recuperen? Sé que puedo simplemente copiar los contactos sobre el uso del navegador web y luego sincronizarlos con el dispositivo, pero si se agrega un nuevo contacto al "Directorio", tendría que hacerlo manualmente cada vez, así que esto no es así. una gran elección para mí Por favor avise.

+0

http://developer.android.com/resources/samples/ContactManager/index.html – VicVu

+0

simplemente he tratado el código en los getContacts función() (ContactManager. archivo java), pero terminan sin entradas, no importa a qué establezca mShowInvisible. – BVB

+0

Configuración 'String selection = null;' devolvió el mismo resultado que tuve originalmente con el código que mencioné. – BVB

Respuesta

3

vistazo al siguiente código

import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
      public class TestContacts extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
      null, null, null); 
    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur 
        .getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cur 
        .getString(cur 
          .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     if (("1") 
        .equals(cur 
          .getString(cur 
            .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))) { 
       Cursor pCur = cr.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
           + " = ?", new String[] { id }, null); 
       int i = 0; 
       int pCount = pCur.getCount(); 
       String[] phoneNum = new String[pCount]; 
       String[] phoneType = new String[pCount]; 
       while (pCur.moveToNext()) { 
        phoneNum[i] = pCur 
          .getString(pCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        phoneType[i] = pCur 
          .getString(pCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 

        i++; 
       } 
      } 
+0

Creo que 'Cursor cur = cr.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null);' no podrá consultar el "Directorio". Creo que lo he intentado antes. – BVB

+0

No he podido encontrar una solución amistosa a este problema. Una solución alternativa que utilicé fue agregar contactos manualmente del "Directorio" a "Mis contactos". Esto haría que el código que publica funcionara bien (el mío terminó un poco diferente, pero la idea es la misma). Por supuesto, si hubiera una nueva entrada en el "Directorio", tendría que ser movida manualmente. Informaré si encuentro una mejor manera de hacerlo. – BVB

+0

@BVB ¿Encontraste una mejor solución mientras tanto? –

Cuestiones relacionadas