从手机和SIM卡读取所有联系人Android

问题描述:

编辑:::代码的作品。这是Eclipse的一个问题,并且代码按照预期在logcat中显示输出。从手机和SIM卡读取所有联系人Android

的Android 2.3.3

我非常新的使用contentproviders。我只想尝试一个如何从手机中检索联系人的示例。我看过几个例子,但是当我尝试通过我的三星手机时,没有一个例子为我工作。

这里是我使用的代码...

public class Class_Add_Contact extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_add_contact); 

     readContacts();  
    } 

    private void readContacts() { 
     // TODO Auto-generated method stub 

     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null); 

     while (cur.moveToNext()) { 

      String name =cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));  
      String phoneNumber = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

      System.out.println(name + " " + phoneNumber); 
      } 
    } 
} 

的代码看起来很好,但目前还没有在logcat中显示任何数字。什么可能是错的?

试试这个

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 

while (cursor.moveToNext()) { 
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
    String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
    System.out.println(contactId + " " + name); 
} 
cursor.close(); 

返回联系人的姓名和ID(id为可能接触表的行数)

+0

我们什么时候使用ContactsContract.Contact,做当我们使用ContactsContract .CommonDataKinds.Phone? – 2013-04-06 15:28:52

+0

这两个代码正在工作。这只是Eclipse的一个问题。 – 2013-04-06 15:37:36

+0

我认为ContactContract.CommonDataKinds帮助您插入新的数据或改变它(programmaticaly ..)和ContactsContract.Contact只返回联系人表作为常数..这样你就不能更改任何数据.. – Elior 2013-04-06 16:37:35