Android 将应用程序链接到联系人

Android 将应用程序链接到联系人,android,mime-types,android-contentprovider,android-contacts,Android,Mime Types,Android Contentprovider,Android Contacts,是否可以将某些应用程序与联系人链接 我试过这个教程,但似乎这不是我想要的 如果我只是向一些原始联系人ID添加自定义字段,如下所示: ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);

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

我试过这个教程,但似乎这不是我想要的

如果我只是向一些原始联系人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();
    }
我可以用光标抓取这些字段,但这些字段在联系人详细信息中不可见

我不想让新联系人链接到某个帐户。我只想在contact details中为我的应用程序添加快捷方式,以便在quick contact badge中使用它,或者直接从contact details中使用它-WhatsApp之类


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

只有在原始联系人中添加contacts contract.commondatatypes.StructuredName.CONTENT\u ITEM\u TYPE时,才能在联系人中看到。只有这样,才会发生聚合。还要确保要链接的联系人的显示名称必须相同

假设您有一个名为“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();
}
ArrayList operationList=newArrayList();
ContentProviderOperation.Builder=ContentProviderOperation.newInsert(RawContacts.CONTENT\u URI);
builder.withValue(rawscontacts.ACCOUNT\u NAME,ACCOUNT.NAME);
builder.withValue(rawscontacts.ACCOUNT\u类型,ACCOUNT.TYPE);
add(builder.build());
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\u URI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,0)
.带值(contacts contract.Data.MIMETYPE,
ContactsContract.CommonDataTypes.StructuredName.CONTENT\u ITEM\u TYPE)
.withValue(ContactsContract.CommonDataTypes.StructuredName.DISPLAY\u NAME,“测试”)
.build());
builder=ContentProviderOperation.newInsert(RawContacts.CONTENT\u URI);
builder=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\u URI);
带ValueBackReference的生成器(contacts contract.Data.RAW\u CONTACT\u ID,0);
withValue(ContactsContract.Data.MIMETYPE,“vnd.android.cursor.item/vnd.org.c99.SyncProviderDemo.profile”);
builder.withValue(contacts contract.Data.DATA1,用户名);
builder.withValue(contacts contract.Data.DATA2,“SyncProviderDemo配置文件”);
builder.withValue(contacts contract.Data.DATA3,“查看配置文件”);
add(builder.build());
试一试{
mContentResolver.applyBatch(contacts contract.AUTHORITY,operationList);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
还要确保您的contacts.xml必须具有相同的android:mimeType,即
android:mimeType=“vnd.android.cursor.item/vnd.org.c99.SyncProviderDemo.profile”
那么只有您的联系人链接才可见


我希望这有帮助

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