“通讯录”应用中的自定义操作(类似于G +)

我正在创build一个应用程序,我想与Android的联系人/人员应用程序集成。 我设置了我的自定义MIMEtypes,一个同步适配器,以及一个具有ContactsDataKind元素的contacts.xml文件。

这似乎工作正常,但似乎不可能定义多种行为每种数据types(在这种情况下,我希望人们能够查看联系人的configuration文件,以及直接发送给他们一条消息。

G +应用程序似乎处理这个,但我一直无法弄清楚他们是如何做到的。 以下是人物中G +集成的截图: http : //i.imgur.com/QotHjDk.png

感谢您的时间!

Solutions Collecting From Web of "“通讯录”应用中的自定义操作(类似于G +)"

插入ContactsContract.Data时,只需要ContactsContract.Data表中添加其他行 。 请参阅文档中的“contacts.xml结构”:

<ContactsDataKind>元素控制应用程序的自定义数据行在联系人应用程序的UI中的显示。 它具有以下语法:

 <ContactsDataKind android:mimeType="MIMEtype" android:icon="icon_resources" android:summaryColumn="column_name" android:detailColumn="column_name"> 

对于其中的每一个,联系人的应用程序ContactDetailFragment添加一个DataViewEntry 。 列表条目充当用于构build联系人详情UI的适配器的数据。 当包含一个意图的条目被点击时, startActivity()被调用。 这个Intent是根据数据项的MIMEtypes和Uri构build的。

 entry.intent = new Intent(Intent.ACTION_VIEW); entry.intent.setDataAndType(entry.uri, entry.mimetype); 

例如,G +应用程序具有以下es_contacts.xml

 <ContactsDataKind android:summaryColumn="data2" android:detailColumn="data3" 

并创build这样的行:

 ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference("raw_contact_id", i1) .withValue("mimetype", "vnd.android.cursor.item/vnd.googleplus.profile.comm") .withValue("data4", Integer.valueOf(14)) .withValue("data5", "hangout") .withValue("data3", context.getString(R.string.start_hangout_action_label)); ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference("raw_contact_id", i1) .withValue("mimetype", "vnd.android.cursor.item/vnd.googleplus.profile") .withValue("data4", Integer.valueOf(20)) .withValue("data5", "addtocircle") .withValue("data3", context.getString(R.string.add_to_circle_action_label));