编辑:::代码有效。这是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);
}
}
}
代码看起来很好,但是logcat中没有显示任何数字。可能有什么不对?
答案 0 :(得分:7)
试试这个
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可能是联系人表的行号)