阅读手机和SIM卡中的所有联系人

Vam*_*lla 6 android android-contentprovider

编辑:::代码有效.这是Eclipse的一个问题,代码按预期在logcat中显示输出.

Android 2.3.3

我很擅长使用contentproviders.我只想尝试一下如何从手机中检索联系人的示例.我看过几个例子,但是当我在SAMSUNG Mobile上试用它时,没有一个适用于我.

这是我用过的代码......

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);
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码看起来很好,但是logcat中没有显示任何数字.可能有什么不对?

Eli*_*ior 8

试试这个

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();
Run Code Online (Sandbox Code Playgroud)

它返回联系人的姓名和id(id可能是联系人表的行号)