将自定义mimetypes添加到android中的联系人

我正在尝试为他选择的每个联系人编写一个为用户存储数据的应用程序。 我想向每个用户添加一个custom provider (如facebook所做的),按下它将打开我的应用程序并允许用户查看存储的数据。 我按照本指南创建了一个自定义提供程序: http : //www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/

但是custom provider没有出现在我的联系人列表中,我试图将我的MIME_TYPE更改为vnd.com.google.cursor.item/contact_user_defined_field ,但也没有帮助(当使用第三方应用程序时它显示我的提供程序但没有我的图标)

我的联系定义是这样的:

    

我的相关代码是这样的:

 String MIME_TYPE "vnd.android.cursor.item/vnd.MyPackageName.profile"; ArrayList ops = new ArrayList(); int rawContactInsertIndex =ops.size();//(int)Contact_RAW_ID; ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) .withValue(RawContacts.ACCOUNT_TYPE, null) .withValue(RawContacts.ACCOUNT_NAME,null ) .build()); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) .withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, "9X-XXXXXXXXX") .build()); ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE) .withValue(StructuredName.DISPLAY_NAME, "John Doe") .build()); ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(Data.MIMETYPE,Email.CONTENT_ITEM_TYPE) .withValue(Email.ADDRESS, "John Doe") .build()); ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, "1234567890") .build()); ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, 0) .withValue(Data.MIMETYPE,MIME_TYPE) .withValue(Data.DATA1, "Custom Field") .withValue(Data.DATA2, "Custom Field Header") .withValue(Data.DATA3, "Custom Field Body") .build()); ContentProviderResult[] res = CallerActivity.getContentResolver().applyBatch (ContactsContract.AUTHORITY, ops); 

编辑(06/01/2013):设法修复它,如果要使联系人可见,请确保您为提供者提供的帐户名称是联系人帐户的名称。

现在我有一个不同的问题,在4.0设备中,联系人变成了彼此的重复,我试图手动聚合,但在某些设备中它可以工作,而在某些设备中则不然。

此要求的最佳示例https://github.com/nemezis/SampleContacts