2014-07-04 36 views
7

我正在創建一個應用程序,以便與Android的聯繫人/人員應用程序進行集成。我設置了自定義MIME類型,一個同步適配器和一個contacts.xml文件,該文件具有ContactsDataKind元素。「通訊錄」應用中的自定義操作(類似於G +)

這似乎工作正常,但似乎不可能爲每種數據類型定義多個操作(在這種情況下,我希望人們能夠查看聯繫人的配置文件,並直接向其發送消息。

的G +應用程序似乎是處理這個問題,但我一直無法弄清楚他們是如何做這裏的G +集成在人們的截圖:!http://i.imgur.com/QotHjDk.png

謝謝您的時間

+0

這不是我清楚你在做什麼試圖去做。您是否希望自己的應用出現在聯繫人/人員內部的菜單中,或者在您的應用中有多個操作選項?在我的手機上,我可以看到屏幕截圖中的鏈接方式,即進入手機應用程序,觸摸某人的磁貼上的菜單按鈕(三個垂直對齊的點)與該人的聯繫信息進行對話,然後觸摸該對話框中的聯繫人圖標。那時我不確定我是否仍在電話應用程序或聯繫人/人應用程序中。 – hBrent

回答

8

您只需要ContactsContract.Data表中添加其他行插入聯繫人時使用。看到documentation「contacts.xml結構」:

<ContactsDataKind>元素控制你的 應用程序的自定義數據行的聯繫人應用程序的用戶界面的顯示屏。它 的語法如下:

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

有關這些每一個聯繫人的應用ContactDetailFragment增加了一個DataViewEntry。列表條目充當用於構建聯繫人詳情UI的適配器的數據。當包含意圖的條目被點擊時,startActivity()被調用。這個Intent是根據數據項的MIME類型和Uri構建的。

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" 

,並創建這樣的行:

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)); 
+0

當我使用多個MIME類型時,我的應用程序在快速聯繫彈出窗口中出現多次(滑塊中有多個頁面)。每個頁面都有一個動作。這是我的設置問題,還是我可以通過其他方式解決的問題? –

+0

@matiash你在哪裏找到G +應用程序的源代碼? – kierans

+2

@ kierans我沒有,只是用dex2jar來反編譯它。 – matiash

相關問題