回答
看ContactsContract.CommonDataKinds.StructuredName
类。你可以在那里找到你正在寻找的所有列。尝试像这样:
String whereName = ContactsContract.Data.MIMETYPE + " = ?";
String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE };
Cursor nameCur = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
while (nameCur.moveToNext()) {
String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
}
nameCur.close();
它返回联系人中的所有名称。更准确地说,您可以将联系人ID添加为查询的附加参数 - 您将获得特定联系人的地址。
一个注意:上面的查询返回您的手机中的所有(我的意思是全部)联系人(即使电子邮件没有赋予名字)。所以你应该过滤它们来获得你想要的联系人 – 2011-01-09 10:24:12
而我的一个注意:MIMETYPE真的是必需的,否则你最终得不到你所期望的。我忽略了这个细节,花了我一个小时来调试它。 – 2011-12-27 15:32:44
获取电话拥有者的名字和姓氏怎么样?它可行吗? – 2012-10-26 10:18:46
在指定的联系人,你可以这样做:
String whereName = ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = ?";
String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, contact_ID };
Cursor nameCur = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
while (nameCur.moveToNext()) {
String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
}
nameCur.close();
尝试使用此代码来获取有关该联系人的所需信息,代码是这里 -
import android.provider.ContactsContract.Contacts;
import android.database.Cursor;
// Form an array specifying which columns to return, you can add more.
String[] projection = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Email
};
Uri contacts = ContactsContract.Contacts.CONTENT_LOOKUP_URI;
// id of the Contact to return.
long id = 3;
// Make the query.
Cursor managedCursor = managedQuery(contacts,
projection, // Which columns to return
null, // Which rows to return (all rows)
// Selection arguments (with a given ID)
ContactsContract.Contacts._ID = "id",
// Put the results in ascending order by name
ContactsContract.Contacts.DISPLAY_NAME + " ASC");
作为另一个例子(只是为了好玩),但是用于获取单个用户的联系人姓名:
// A contact ID is fetched from ContactList
Uri resultUri = data.getData();
Cursor cont = getContentResolver().query(resultUri, null, null, null, null);
if (!cont.moveToNext()) {
Toast.makeText(this, "Cursor contains no data", Toast.LENGTH_LONG).show();
return;
}
int columnIndexForId = cont.getColumnIndex(ContactsContract.Contacts._ID);
String contactId = cont.getString(columnIndexForId);
// Fetch contact name with a specific ID
String whereName = ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = " + contactId;
String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE };
Cursor nameCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
while (nameCur.moveToNext()) {
String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
Toast.makeText(this, "Name: " + given + " Family: " + family + " Displayname: " + display, Toast.LENGTH_LONG).show();
}
nameCur.close();
cont.close();
在这里检查是否存在示例代码精确ly为此: http://developer.android.com/guide/topics/ui/layout/listview.html
2015年底在棉花糖上试验ContactsContract.Data.CONTENT_URI
。我无法获得GIVEN_NAME
或类似字段。我认为后面的apis已经弃用了这些。运行下面的代码打印出你有列在您的手机
Uri uri = ContactsContract.Data.CONTENT_URI;
String selection = ContactsContract.Data.MIMETYPE + " = ?";
String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE};
Cursor cursor = contentResolver.query(
uri, // URI representing the table/resource to be queried
null, // projection - the list of columns to return. Null means "all"
selection, // selection - Which rows to return (condition rows must match)
selectionArgs, // selection args - can be provided separately and subbed into selection.
null); // string specifying sort order
if (cursor.getCount() == 0) {
return;
}
Log.i("Count:", Integer.toString(cursor.getCount())); // returns number of names on phone
while (cursor.moveToNext()) {
// Behold, the firehose!
Log.d(TAG, "-------------------new record\n");
for(String column : cursor.getColumnNames()) {
Log.d(TAG, column + ": " + cursor.getString(cursor.getColumnIndex(column)) + "\n");
}
}
上试试这个,
public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data);
try {
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst()) {
String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String name = "";
String no = "";
Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
if (phoneCur.moveToFirst()) {
name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
Log.e("Phone no & name :***: ", name + " : " + no);
txt.append(name + " : " + no + "\n");
id = null;
name = null;
no = null;
phoneCur = null;
}
contect_resolver = null;
cur = null;
// populateContacts();
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
Log.e("IllegalArgumentException::", e.toString());
} catch (Exception e) {
e.printStackTrace();
Log.e("Error :: ", e.toString());
}
}
- 1. Android联系人:如何获取名字,姓氏和图片的联系人列表
- 2. 从号码获取联系人姓名
- 3. CIVICRM,如何在联系人中输入姓氏或名字?
- 4. 如何从联系人编号中读取联系人姓名?
- 5. 获取联系人姓名addess
- 6. 如何从联系人列表中读取联系人姓名和号码
- 7. WordPress的获取名字和姓氏
- 8. 从电话簿获取联系人姓名使用号码 - Android
- 9. 从Android 2.3.4号码获取联系人姓名
- 10. Android获取联系人姓名和号码查询
- 11. android使用SimpleCursorAdapter获取联系人姓名和号码
- 12. 如何从PHONENUMBER获取联系人姓名,请帮我
- 13. Django表单:如何从HTML表单获取姓氏和名字?
- 14. 如何使用Laravel Socialite从Facebook获取名字和姓氏?
- 15. 联系人选择器,检索姓氏,名字,电话号码
- 16. 从姓氏和姓氏字段中获取最短的唯一名称
- 17. 从freebase获取人们的姓氏或基督教名字?
- 18. 获取姓名缩写联系人姓名
- 19. Bluesnap卡持有人名字和姓氏
- 20. 从联系人应用程序获取子女姓名(关系)
- 21. 串联名字和姓氏作为名称,然后ommit Firtname和姓氏在SSIS
- 22. android获取联系人的名字
- 23. 如何从字符串中提取名字和姓氏
- 24. 从表格中提取姓氏,姓氏和姓氏
- 25. Android:使用电话号码获取联系人姓名
- 26. 如何从android中的联系人获取联系人号码?
- 27. 如何从联系人列表中获取联系人姓名,电话号码和电子邮件ID?
- 28. 如何在接收短信时获取联系人姓名
- 29. 如何获取登录的Windows用户的名字和姓氏?
- 30. iPhone SDK:从电话号码获取联系人姓名
你好,我想这一点,但没有奏效。这是我的问题,我非常感谢你的帮助! :) http://stackoverflow.com/questions/35097844/get-contact-name/35098111#35098111 – 2016-01-30 05:03:29