2014-07-04 15 views
7

Android'in kişilerin/kişilerin uygulamasına entegre etmek istediğim bir uygulama oluşturuyorum. Özel mime türümü, bir syncadapter ve bir ContactsDataKind öğesi olan bir contacts.xml dosyasını kurdum.Kişiler uygulamasında özel eylemler (G + 'ya benzer)

Bu iyi çalışıyor gibi görünüyor, ancak veri türü başına birden çok eylem tanımlamak mümkün görünmüyor (bu durumda, kişilerin bir kişinin profilini görüntüleyebilmelerini ve doğrudan ileti gönderebilmelerini istiyorum .

G + uygulaması şu işlemek gibi görünüyor, ama ben nasıl yaptıklarını anlamaya yapamaz oldum İşte Kişiler'de G + entegrasyon ekran görüntüsü:.!

http://i.imgur.com/QotHjDk.png zaman ayırdığınız için teşekkür ederiz

+0

yapmaya çalışmak. Uygulamanızın kişiler/kişiler içinden gelen menüde görünmesini veya uygulamanızda birden fazla işlem seçeneği olmasını istiyor musunuz? Telefonumda, bağlandığınız ekran görüntüsünde olduğu gibi bir ekranın telefon uygulamasına girme şeklini görebildiğim şekilde, oradaki bir kişinin döşemesindeki menü düğmesine (üç dikey olarak hizalanmış nokta) dokunarak, Kişinin iletişim bilgilerini içeren bir iletişim kutusu, daha sonra bu iletişim kutusundaki kişi simgesine dokunmak. Bu noktada hala telefon uygulamasında mı yoksa kişi/kişiler uygulamasında mı olduğumdan emin değilim. – hBrent

cevap

8

ContactsContract.Data tablosuna ek satırlar eklemeniz yeterlidir Bir kişi eklerken. documentation yılında "contacts.xml yapısını" Bkz:

<ContactsDataKind> eleman kontakları uygulamanın arayüzünde uygulamanın özel veri satırlarının gösterilmesini kontrol eder. Bu sözdizimi aşağıdaki gibidir: Bunların her biri için

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

, Kişinin uygulaması ContactDetailFragment bir DataViewEntry ekler. Liste girdileri, iletişim ayrıntıları kullanıcı arayüzünü oluşturmak için kullanılan bir adaptörün verileri gibi davranır. Niyet içeren bir giriş tıklandığında, startActivity() çağrılır. Bu amaç, veri öğesinin MIME türü ve Uri'den oluşturulur.

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

Ve böyle satırları oluşturur: Örneğin:


entry.intent = new Intent(Intent.ACTION_VIEW); 
entry.intent.setDataAndType(entry.uri, entry.mimetype); 
, G + app es_contacts.xml aşağıdaki sahiptir O sen bana ne net değil

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

Birden çok MIME türü kullandığımda, uygulamanız hızlı iletişim açılan pencerede birden çok kez (kaydırıcıda birden çok sayfa) görünüyordu. Her sayfanın tek bir eylemi vardı. Kurulumumla ilgili bir sorun mu var, yoksa başka bir şekilde çözebileceğim bir şey mi? –

+0

@matiash G + uygulamasının kaynağını nereden buldunuz? – kierans

+2

@kierans Ben yapmadım, sadece decode onu dex2jar kullandı. – matiash