【问题标题】:Link application with contact将应用程序与联系人链接
【发布时间】:2013-05-23 14:46:46
【问题描述】:

是否可以将某些应用程序与联系人链接?

我已经尝试过这个教程 - http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/ 但似乎这不是我想要的。

如果我只是像这样将自定义字段添加到某些 RAW_CONTACT_ID:

ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
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.org.c99.SyncProviderDemo.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();
    }

我可以用光标抓取此字段,但此字段在联系方式中不可见。

我不想让新联系人链接到某个帐户。我只想在联系方式中为我的应用程序添加快捷方式,以便在快速联系徽章中使用它或直接从联系方式中使用它——比如 WhatsApp。

对于这种情况有什么解决方案,或者有人可以指出我正确的方向吗?

【问题讨论】:

  • 您找到解决方案了吗?你是如何完成任务的?

标签: android mime-types android-contentprovider android-contacts


【解决方案1】:

仅当您在原始联系人中添加 ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE 时,这才会在联系人中可见。只有这样才会发生聚合。还要确保您要链接的联系人的 DISPLAY_NAME 必须相同。

假设您有一个名为“test”(DISPLAY_NAME) 的联系人,那么您必须进行以下更改:

ArrayList<ContentProviderOperation> operationList = newArrayList<ContentProviderOperation>();

ContentProviderOperation.Builder builder =ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
operationList.add(builder.build());

operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,"test")
.build());

builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
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.org.c99.SyncProviderDemo.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();
}

还要确保您的 contacts.xml 必须具有相同的 android:mimeType 即 android:mimeType="vnd.android.cursor.item/vnd.org.c99.SyncProviderDemo.profile" 那么只有您的联系链接可见...

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多