2012-01-18 25 views
6

Desidero leggere tutti i contatti sim e i contatti telefonici separatamente in Android. Ho cercato questo e ho trovato un sacco di persone che hanno problemi con questo e non sono riuscito a trovare alcuna soluzione ancora. Mi piace un po 'rispondere here, ma non funziona per me. quando prova questo mi dia i contatti di Google:Come leggere i contatti sim Android e i contatti telefonici separatamente

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

Ma quando provo questo non mi dà i contatti della SIM:

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

Poi ho trovato RawContacts sono contatti che ha creato per l'adattatore di sincronizzazione in here. Questo potrebbe essere il problema. Così qualcuno può dirmi il modo di far

  • Tutti simcontacts
  • Tutti i contatti del telefono

Grazie.

+1

Forse c'è un errore di battitura in ACCOUNT_TYPE? Prova 'com.android.contacts.sim'. – Ash

+0

ohh scusa ho sbagliato a digitare, ma non è il caso :). Editò questo – sampathpremarathna

+0

hai trovato la soluzione? –

risposta

13

per contatti telefonici

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()); 
     } 

per contatti sim

String 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

Grazie per la riproduzione. Nel primo esempio sto ricevendo tutti i contatti. (non solo i contatti salvati sul telefono ma anche sim e sincronizzati con google) – sampathpremarathna

+0

E il secondo funziona bene, – sampathpremarathna

+0

Non c'è modo di ottenere contatti del telefono tranne contatti salvati in sim o sincronizzati con google (o altri account di sincronizzazione) – sampathpremarathna

3

ho trovato molti telefoni usano "com.android.contacts.sim" in RawContacts.ACCOUNT_TYPE per i contatti SIM. Ma ho anche scoperto che HTC usa "com.anddroid.contacts.sim" (errato per Android). Questo è strano.

+0

e alcuni utilizza anche "vnd.sec.contact.sim". – sampathpremarathna

+0

Come si trovano tutti i possibili account di SIM e locali, in cui è possibile salvare un nuovo contatto, indipendentemente dal dispositivo su cui viene eseguito? –

Problemi correlati