如何从自定义帐户中检索联系方式?
Posted
技术标签:
【中文标题】如何从自定义帐户中检索联系方式?【英文标题】:How to retrieve contact details from custom account? 【发布时间】:2014-08-20 04:44:13 【问题描述】:我已经使用我的自定义帐户类型创建了一个 android 应用程序。帐户类型显示在“帐户和同步”设置中,我的所有联系人从自己的服务器同步到我的手机正常工作。
我用于将联系人添加到自定义帐户的代码。
private static void addContact(Account account, String name, String username)
Log.i(TAG, "Adding contact: " + name);
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
builder.withValue(RawContacts.SYNC1, username);
operationList.add(builder.build());
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
operationList.add(builder.build());
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.com.example.mysync.profile");
builder.withValue(ContactsContract.Data.DATA1, username);
builder.withValue(ContactsContract.Data.DATA2, "SyncProviderDemo Profile");
builder.withValue(ContactsContract.Data.DATA3, "View profile");
operationList.add(builder.build());
try
mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
如何检索插入的新联系信息(姓名、电话等) 通过EditSchema。 我只想获取我的自定义帐户联系人详细信息,而不是所有联系人。
【问题讨论】:
【参考方案1】:我终于找到了我的问题的答案。
Cursor c = getContentResolver().query(
RawContacts.CONTENT_URI,
new String[] RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY ,
RawContacts.ACCOUNT_TYPE + "= ?",
new String[] "com.example.mysync" , null);
ArrayList<String> myContacts = new ArrayList<String>();
int contactNameColumn = c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY);
while (c.moveToNext())
// You can also read RawContacts.CONTACT_ID to read the
// ContactsContract.Contacts table or any of the other related ones.
myContacts.add(c.getString(contactNameColumn));
这段代码对我有用...
有关更多信息,请在此处完成项目,
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.0.4_r2.1/com/android/exchange/adapter/ContactsSyncAdapter.java?av=f
【讨论】:
以上是关于如何从自定义帐户中检索联系方式?的主要内容,如果未能解决你的问题,请参考以下文章
如何从自定义 UITableview 中检索有关选择单元格的数据