是否可以将某些应用程序与联系人链接?
我试过这个教程 - http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/但似乎这不是我正在寻找的。 p>
如果我只是将自定义字段添加到某些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喜欢。
对于这种情况是否有一些解决方案,或者有人可能指出我正确的方向?
答案 0 :(得分:0)
只有在原始联系人中添加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"
那么只有您的联系链接可见...
我希望这会有所帮助