如何分别读取android sim联系人和手机联系人

问题描述:

我想在Android中分别读取所有sim联系人和手机联系人。我搜索了这个,发现很多人有这个问题,我还找不到任何解决方案。我喜欢一些回答here,但它不适合我。 当我测试这一点,给我的谷歌联系人:如何分别读取android sim联系人和手机联系人

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

但是当我测试这一点,不给我SIM卡联系人:

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

后来我发现RawContacts是通过同步适配器中创建联系人here。这可能是问题所在。因此,谁能告诉我,让

  • 所有simcontacts
  • 所有手机联系人

感谢的方式。

+1

也许在ACCOUNT_TYPE中存在拼写错误?试试'com.android.contacts.sim'。 – Ash 2012-01-18 10:56:10

+0

ohh对不起,我输入了一个错误,但事实并非如此:)我会编辑这个 – sampathpremarathna 2012-01-18 10:59:24

+0

你有没有找到解决方案? – 2012-07-09 14:50:51

为电话联系人

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

为SIM卡联系人

字符串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

感谢您的replay.in第一个例子,我得到所有联系人(不仅联系人保存到手机,但也模拟和谷歌同步) – sampathpremarathna 2012-01-18 11:51:25

+0

第二个它的 – sampathpremarathna 2012-01-18 12:13:02

+0

有没有办法获得手机通讯录,除了保存的联系人与谷歌(或其他同步帐户)进行SIM卡或同步。 – sampathpremarathna 2012-01-18 14:52:23

我发现很多电话在RawContacts.ACCOUNT_TYPE使用"com.android.contacts.sim"于SIM卡联系人。但我也发现HTC使用“com.anddroid.contacts.sim”(拼写错误 for android)。这很奇怪。

+0

,还有一些使用“vnd.sec.contact.sim”。 – sampathpremarathna 2012-12-24 03:11:19

+0

如何找到所有可能的SIM和本地帐户,以便将新联系人保存到哪里,而不管它在哪个设备上运行? – 2016-05-15 11:35:16