我正在尝试编写一个为用户存储数据的应用程序
他选择的每个联系人.
我想向每个用户添加一个自定义提供者(如Facebook所做)
在新闻界将打开我的应用程序,并允许用户查看存储的数据.
我已经创建了一个自定义提供程序遵循本指南:
http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/
他选择的每个联系人.
我想向每个用户添加一个自定义提供者(如Facebook所做)
在新闻界将打开我的应用程序,并允许用户查看存储的数据.
我已经创建了一个自定义提供程序遵循本指南:
http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/
但自定义提供程序不会显示在我的联系人列表中,
我已经尝试将我的MIME_TYPE更改为vnd.com.google.cursor.item / contact_user_defined_field
这没有帮助(当使用第三方应用程序,它显示我的提供商,但没有我的图标)
我的联系定义是这样的:
<ContactsSource xmlns:android="http://schemas.android.com/apk/res/android"> <ContactsDataKind android:icon="@drawable/ic_launcher" android:mimeType="vnd.android.cursor.item/vnd.MyPackageName.profile" android:summaryColumn="data2" android:detailColumn="data3" android:detailSocialSummary="true" /> </ContactsSource>
我的相关代码是:
String MIME_TYPE "vnd.android.cursor.item/vnd.MyPackageName.profile"; ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 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,StructuredName.CONTENT_ITEM_TYPE) .withValue(StructuredName.DISPLAY_NAME,"John Doe") .build()); ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID,Email.CONTENT_ITEM_TYPE) .withValue(Email.ADDRESS,"John Doe") .build()); ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID,"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设备中,联系人变得彼此重复
我尝试手动聚合,但在某些设备中它的工作原理,有些则不做.