我正在关注此示例retrieve list of contacts以从Android设备检索联系人。 它提供了包括电子邮件联系人和一些空联系人在内的所有联系人。
我尝试在投影和选择中修改像ContactsContract.Contacts.HAS_PHONE_NUMBER
这样的ContactsContract以获取移动联系人,但没有任何结果。
String[] PROJECTION = {ContactsContract.Contacts._ID,ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts._ID,
SORT_ORDER,ContactsContract.Contacts.HAS_PHONE_NUMBER};
字符串选择= ContactsContract.Contacts.DISPLAY_NAME +“<>''”+“AND”ContactsContract.Contacts.IN_VISIBLE_GROUP +“= 1”;
是否只想获得具有手机号码的联系人?
答案 0 :(得分:3)
我已经创建了这个库来解决您的所有查询。它只会保存带有至少一个电子邮件或电话号码的联系人。它还将删除相同联系人(由whatsapp之类的第三方应用程序创建)中电子邮件和电话号码中的重复项。
欢迎提出建议。
答案 1 :(得分:1)
您可以使用此代码获取所有联系人姓名和号码
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String contactName=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String contactNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
答案 2 :(得分:0)
仅显示包含电话号码和打开联系人列表意图的联系人:
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); // Uri.parse("content://contacts")
// Show only user contacts with phone numbers
pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); // Show only user contacts with phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
从回复/联系中获取电话号码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
Uri contactUri = data.getData();
String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor cursor = getActivity().getContentResolver().query(contactUri, projection, null, null, null);
if (cursor == null) {
// show error msg
return;
}
cursor.moveToFirst();
int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
if (column >= 0) {
String phoneNo = cursor.getString(column);
sendSmsMessage(phoneNo);
} else {
// show error msg
}
cursor.close();
}
}
}
确保您还在API 23 +
中处理运行时权限android.permission.READ_CONTACTS