如何从自定义帐户中检索联系方式?

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

【讨论】:

以上是关于如何从自定义帐户中检索联系方式?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 大查询 - 如何从自定义事件表中检索数据

如何从自定义 UITableview 中检索有关选择单元格的数据

不确定如何从自定义端点检索数据?

Application Insights 从自定义数据源中清除数据

从自定义标头中检索访问令牌

从自定义 mojo 访问 maven 插件的运行时配置的最佳方式?