- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的应用程序中,我需要让用户有机会查看/编辑 ContactsContract 的所有可用字段。
我应该如何获取/查看所有可用字段 - 包括任何自定义字段?
最佳答案
首先获取手机中存在的所有人的姓名:
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
null,
null,
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
while (phones.moveToNext()) {
name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
namelist.add(name);
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
number_list.add(phoneNumber);
detaillist.put(name, phoneNumber);
}
phones.close();
}
现在获取联系人 ID 并使用联系人 ID 获取其他信息,如电话号码、电子邮件 ID、地址、组织:
protected void get_UserContactId(String item_clicked)
{
System.out.println("i m in fincution contact id");
ContentResolver localContentResolver = this.getContentResolver();
Cursor contactLookupCursor =
localContentResolver.query(
Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(item_clicked)),
new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID},
null,
null,
null);
try {
while(contactLookupCursor.moveToNext()){
contactName = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
user_contact_id = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID));
System.out.println("contatc id id"+user_contact_id);
}
}
finally {
contactLookupCursor.close();
}
}
protected void get_UserEmail(String item_clicked)
{
Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + user_contact_id, null, null);
while (emails.moveToNext()) {
// This would allow you get several email addresses
user_email_id = emails.getString(
emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String user_email_type=emails.getString(
emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
System.out.println("the email type"+user_email_type);
System.out.println("email address might be"+emailAddress);
contact_attribute_type.add(EMAIL_TYPE[(Integer.parseInt(user_email_type))-1]);
contact_attribute_value.add(user_email_id);
}
emails.close();
}
protected void get_UserNumber(String item_clicked) {
// TODO Auto-generated method stub
final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.STARRED,
ContactsContract.Contacts.TIMES_CONTACTED,
ContactsContract.Contacts.CONTACT_PRESENCE,
ContactsContract.Contacts.PHOTO_ID,
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
};
String select = "(" + ContactsContract.Contacts.DISPLAY_NAME + " == \"" +item_clicked+ "\" )";
Cursor c = this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
this.startManagingCursor(c);
if (c.moveToNext())
{
String id = c.getString(0);
ArrayList<String> phones = new ArrayList<String>();
Cursor pCur = this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
while (pCur.moveToNext())
{
phones.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
user_number=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String number_type=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
System.out.println("the number type---"+number_type);
System.out.println("user no. in share is"+user_number);
contact_attribute_type.add(PHONE_TYPE[(Integer.parseInt(number_type))-1]);
contact_attribute_value.add(user_number);
// Log.i("", name_to_search+ " has the following phone number "+ pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
pCur.close();
}
}
protected String get_UserAddress() {
// TODO Auto-generated method stub
try {
System.out.println(" i m in user address");
Cursor address = getContentResolver().query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,null, ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = " + client_contact_id, null, null);
while (address.moveToNext()) {
// This would allow you get several email addresses
user_home_address = address.getString(
address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.DATA));
String user_address_type=address.getString(
address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
System.out.println("the user address type"+user_address_type);
System.out.println(" address might be"+user_home_address);
contact_attribute_type.add(ADDRESS_TYPE[(Integer.parseInt(user_address_type))-1]);
contact_attribute_value.add(user_home_address);
}
address.close();
}
catch(Exception e)
{
System.out.println("this exception due to website"+e);
}
return(user_home_address);
}
protected void get_UserWebsite() {
// TODO Auto-generated method stub
try{
Cursor websiteNameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,new String[] {Website.URL}, ContactsContract.Data.CONTACT_ID + " = " + user_contact_id + " AND ContactsContract.Data.MIMETYPE = '"
+ ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE
+ "'",null,null);
websiteNameCursor.moveToNext();
user_website=(websiteNameCursor.getString(websiteNameCursor.getColumnIndex(Website.URL)));
System.out.println("this is my website"+(websiteNameCursor.getString(websiteNameCursor.getColumnIndex(Website.URL))));
contact_attribute_type.add("Website");
contact_attribute_value.add(user_website);
}
catch(Exception e)
{
user_website=null;
System.out.println("this website is"+user_website);
System.out.println("this exception in website"+e);
}
}
protected void get_UserOrganization() {
// TODO Auto-generated method stub
try{
Cursor organizationNameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,new String[] {Organization.COMPANY}, ContactsContract.Data.CONTACT_ID + " = " + user_contact_id + " AND ContactsContract.Data.MIMETYPE = '"
+ ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE
+ "'",null,null);
organizationNameCursor.moveToNext();
user_company=organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.COMPANY));
// String user_company_type=organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.TYPE));
// System.out.println("the company type "+user_company_type);
System.out.println("this is my organization"+user_company);
contact_attribute_type.add("Company");
contact_attribute_value.add(user_company);
}
catch(Exception e)
{
user_company=null;
System.out.println("user company name is"+user_company);
System.out.println("this exception in org"+e);
}
}
}
通过这样做你可以获得contacts-contract的所有字段。
关于android - ContactsContract如何枚举所有可用字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10539537/
在how to retrieve the list of contacts in android我看到代码允许您使用 ContactsContract.CommonDataKinds.Phone.CO
我可以使用下面的查询选择所有联系人 cr = mActivity.getContentResolver(); String selection = ContactsContract.C
我试图将隐式意图发送给我的联系人应用程序,以供用户选择联系人。然后,我的应用程序将提取该联系人的姓名和电话号码,以便在该应用程序中使用。 (注意:我在BigNerdRanch的Android书籍的第2
任何人都可以帮助我在地址簿中添加新联系人并使用新的 ContactsContract API 批量应用它们吗?我找不到合适的教程。 我可以添加一个联系人。但是批量更新失败,添加了未知联系人。 目前我在
我想把我手机里的所有联系人放到一个数组中。我正在使用下面的代码,但将它们全部放入数组需要 3-4 秒。为了加快这个过程,我只收集那些有电话号码的联系人。这会产生一个包含 163 个元素的数组。 fin
我正在通过查询联系人 private Cursor cursor; private static final String SORT_ORDER = ContactsContract.Contacts
ContactsContract.Contacts 默认是空的吗?如果是这样,我如何向其中添加一些测试数据? 否则,我一定是做错了什么/遗漏了什么,因为这个 Activity 显示完全是空的。 pub
很抱歉,如果这可能是一个重复的问题,我整个晚上都在努力解决这个问题,而且我似乎找不到其他可能对此有所启发的帖子,所以我希望多几双眼睛可能会发现一些东西。 我对 ContactsContract.Dat
在我的应用程序中,我想调用联系人编辑器以允许用户添加新联系人。我想找到一种方法让应用程序将要使用的帐户传递给编辑器。如何做到这一点? 我还没有找到任何关于如何执行此操作的文档。我确实在 github
我想获取本地联系人的电话号码,但是有问题。例如,如果我选择 A,那么显示的号码是 B 的。这是代码。 //the button_click public void testM(View v) {
我尝试使用获取联系人 ID 和图片 URI 的函数更新 ContactsContract 中的照片,但它似乎不起作用(我的函数返回 true)。 我真的不明白,因为代码看起来不错。 当联系人已经有照片
是否可以对 ContactsContract 进行一次查询以获取一组与显示名称、电话号码或电子邮件地址匹配的联系人? 这本质上是联系人和数据“表”的连接(在引号中,因为它们只是通过界面看起来像表,但可
是否有一个有效的查询来查找特定帐户名称和类型的所有聚合联系人? ContactsContract.Contacts 表有 IN_VISIBLE_GROUP 列,它对联系人组成员身份有效。因此,如果用户
除了 android 站点上的简短文章:- http://developer.android.com/resources/articles/contacts.html 我还没有看到任何关于使用新的 C
我们如何使用隐式连接通过 ContactsContract API 获取 displayname 和 organization.data,以便我可以在一个游标中同时获取这两个值? 最佳答案 您可以使用
我正在使用 ContactsContract 通过将用户发送到“新联系人” Intent 来插入新联系人。我使用的代码是: Intent i = new Intent(Intent.ACTION_IN
我可以使用 ContactsContract 添加联系人到用户的一个帐户(这本身就是一项艰巨的任务!),但我仍然无法将其添加到将显示的组中。我知道用户可以转到他们的联系人选项并选中他们帐户中的“显示所
我试图从 ContactsContract 获取电子邮件地址,但我只得到一个空字符串!姓名和电话号码可以正常使用,但电子邮件地址不行! 我很困惑,几天来一直在尝试解决这个问题,但我不知道出了什么问题,
我正在尝试在 ContactsContract 中创建一个用户配置文件...因为没有,我需要一个用于测试。我没有真实的 Android 设备,只有用于测试的 AVD 模拟器。 这是我正在使用的代码块:
我需要创建一个包含在设备上找到的所有电话号码的列表。所以我所做的是查询 ContactsContract.Data.CONTENT_URI,如下所示: Uri uri = Da
我是一名优秀的程序员,十分优秀!