2014-07-04 10 views
7

Sto creando un'applicazione che vorrei integrare con l'applicazione di contatti/persone di Android. Ho impostato il mio tipo mime personalizzato, un syncadapter e un file contacts.xml con un elemento ContactsDataKind.Azioni personalizzate nell'app Contatti (simile a G +)

Questo sembra funzionare bene, ma sembra che non sia possibile definire più azioni per tipo di dati (in questo caso, mi piacerebbe che le persone fossero in grado di visualizzare il profilo di un contatto, così come mandargli un messaggio direttamente .

il G + app sembra gestire questa situazione, ma sono stato in grado di capire come hanno fatto Ecco uno screenshot della G + integrazione nelle persone:.! http://i.imgur.com/QotHjDk.png

Grazie per il vostro tempo

+0

Non è chiaro per me quello che sei cercando di fare Vuoi che la tua app appaia nel menu che esce da contatti/persone o per avere più opzioni di azione nella tua app? Sul mio telefono il modo in cui sono in grado di vedere una schermata come nello screenshot a cui ci si collega è accedendo all'app del telefono, toccando il pulsante del menu (tre punti allineati verticalmente) sul riquadro di una persona lì, che visualizza una finestra di dialogo con le informazioni di contatto della persona, quindi toccando l'icona del contatto in quella finestra di dialogo. A quel punto non sono sicuro se sono ancora nell'app del telefono o nell'app Contatti/Persone. – hBrent

risposta

8

Devi solo aggiungere righe aggiuntive nella tabella ContactsContract.Data quando si inserisce un contatto. Vedere "struttura contacts.xml" nel documentation:

L'elemento <ContactsDataKind> controlla la visualizzazione di righe di dati personalizzati della vostra applicazione nell'interfaccia utente dell'applicazione contatti. E ha la seguente sintassi:

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

Per ognuno di essi, del contatto app ContactDetailFragment aggiunge uno DataViewEntry. Le voci dell'elenco funge da dati per un adattatore utilizzato per creare l'interfaccia utente dei dettagli del contatto. Quando si fa clic su una voce contenente un'intenzione, viene chiamato startActivity(). Questo intento è basato sul tipo MIME e Uri dell'elemento di dati.

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

Ad esempio, il G + app ha il seguente es_contacts.xml:

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

e crea le righe come questo:

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

Quando ho usato più tipi di mime, la mia applicazione appariva più volte (più pagine nel cursore) nel popup di contatto rapido. Ogni pagina ha una singola azione. È un problema con il mio setup o qualcosa che posso risolvere in un altro modo? –

+0

@matiash Dove hai trovato la fonte per l'app G +? – kierans

+2

@kierans Non l'ho fatto, ho appena usato dex2jar per decompilarlo. – matiash

Problemi correlati