2012-01-18 15 views
6

Quiero leer todos los contactos sim y contactos telefónicos por separado en Android. Busqué esto y encontré que mucha gente tenía problemas con esto y no pude encontrar ninguna solución todavía. Me gusta alguna respuesta here, pero no funciona para mí. Cuando pruebo esto me da Contactos de Google:Cómo leer los contactos sim de Android y los contactos telefónicos por separado

RawContacts.ACCOUNT_TYPE + " = 'com.google' " 

Pero cuando pruebo esto no me da los contactos SIM:

RawContacts.ACCOUNT_TYPE + " = 'com.android.contacts.sim' " 

Entonces me encontré RawContacts son contactos que crearon por el adaptador de sincronización de here. Ese puede ser el problema. Entonces, ¿puede alguien decirme la manera de conseguir

  • Todos simcontacts
  • Todos los contactos del teléfono

Gracias.

+1

¿Tal vez hay un error tipográfico en ACCOUNT_TYPE? Prueba 'com.android.contacts.sim'. – Ash

+0

ohh, lo siento, he cometido un error al escribir, pero ese no es el caso :). Voy a editar este – sampathpremarathna

+0

¿has encontrado la solución? –

Respuesta

13

para los contactos de teléfono

try 
{ 
    String[] PROJECTION=new String[] {Contacts._ID, 
     Contacts.DISPLAY_NAME, 
     Phone.NUMBER 
    }; 

    Cursor c=managedQuery(Phone.CONTENT_URI, 
     PROJECTION, null, null, null); 
     if (c.moveToFirst()) { 
      String ClsPhonename = null; 
      String ClsphoneNo = null; 

      do 
      { 
       ClsPhonename = c.getString(c.getColumnIndex(Contacts.DISPLAY_NAME)); 
       ClsphoneNo = c.getString(c.getColumnIndex(Phone.NUMBER)); 


       ClsphoneNo.replaceAll("\\D", ""); 
       ClsPhonename=ClsPhonename.replaceAll("&", ""); 
       ClsPhonename.replace("|",""); 
       String ClsPhoneName=ClsPhonename.replace("|",""); 

       } 

      } while(c.moveToNext()); 
     } 

para contactos sim

cadena ClsSimPhonename = null; String ClsSimphoneNo = null;

Uri simUri = Uri.parse("content://icc/adn"); 
    Cursor cursorSim = this.getContentResolver().query(simUri,null,null,null,null); 

    while (cursorSim.moveToNext()) 
    {  
     ClsSimPhonename =cursorSim.getString(cursorSim.getColumnIndex("name")); 
     ClsSimphoneNo = cursorSim.getString(cursorSim.getColumnIndex("number")); 
     ClsSimphoneNo.replaceAll("\\D",""); 
     ClsSimphoneNo.replaceAll("&", ""); 
     ClsSimPhonename=ClsSimPhonename.replace("|",""); 
      System.out.println("SimContacts"+ClsSimPhonename); 
      System.out.println("SimContactsNo"+ClsSimphoneNo); 
      dts.createDatabse("MyCellFamily",getApplicationContext()); 

    }   
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 
+0

Gracias por la reproducción. En el primer ejemplo estoy recibiendo todos los contactos. (No solo los contactos guardados en el teléfono sino también sim y sincronizados con google) – sampathpremarathna

+0

Y el segundo es funciona bien, – sampathpremarathna

+0

¿Hay alguna manera de obtener contactos telefónicos excepto contactos guardados en SIM o sincronizados con google (u otras cuentas de sincronización) – sampathpremarathna

3

me encontré con muchos móviles utilizan "com.android.contacts.sim" en RawContacts.ACCOUNT_TYPE para los contactos SIM. Pero también encontré que HTC usa "com.anddroid.contacts.sim" (mal escrito para android). Eso es raro.

+0

y algunos usos "vnd.sec.contact.sim" también. – sampathpremarathna

+0

¿Cómo se encuentran todas las cuentas de SIM y locales posibles, en las que se puede guardar un nuevo contacto, sin importar en qué dispositivo se ejecute? –

Cuestiones relacionadas