2015-06-05 25 views
5

Sto implementando un'applicazione di messaggistica con il protocollo XMPP e il server Openfire su piattaforma Android. Ho bisogno di salvare e caricare la mia vcard personale e di altri utenti. Al momento, sono riuscito a mantenere la mia vCard sul server e posso caricarla di nuovo. Il problema è con gli altri utenti Vcard, il server restituisce sempre XMPPError: funzionalità non implementata - annulla.Carica Vcard con Smack (Android) in Openfire Server

Io uso questa biblioteche:

compile 'org.igniterealtime.smack:smack-android:4.1.2-SNAPSHOT' 
compile 'org.igniterealtime.smack:smack-tcp:4.1.2-SNAPSHOT' 
compile 'org.igniterealtime.smack:smack-extensions:4.1.2-SNAPSHOT' 

Mostra il codice:

salvarmi la vCard (funzionano bene).

VCardManager vCardManager = VCardManager.getInstanceFor(connection); 
VCard vCard; 
vCard = vCardManager.loadVCard(); 
vCard.setNickName("User name"); 
URL urldefault = new URL("Avatar URL"); 
InputStream stream = urldefault.openStream(); 
byte[] avatar1 = readBytes(stream); 
vCard.setAvatar(avatar1, "avatar1/jpg"); 
vCard.setEmailHome("user email"); 
vCard.setPhoneHome("mobile", "888888888"); 
vCardManager.saveVCard(vCard); 

Caricare mia vCard (bel lavoro)

VCard vCard = null; 
VCardManager vCardManager = VCardManager.getInstanceFor(connection); 
vCard = vCardManager.loadVCard(); 

Il problema è qui. Carica altra Vcard utente:

VCardManager vCardManager = VCardManager.getInstanceFor(connection); 
boolean isSupported = vCardManager.isSupported(user); 
if (isSupported) // return true 
    vCard = vCardManager.loadVCard(user); 

Il nome utente per caricare Vcard è corretto.

Qualche idea?

Grazie in anticipo.

+0

spero che stiate vedendo questo, è un post più vecchio, ma ho avuto esattamente lo stesso problema. Ma il jid che cerco di caricare è [email protected], senza l'estensione Smack. Hai qualche idea del perché non funziona? – Opiatefuchs

+0

mmm Ho risolto il mio problema con il jid dell'utente senza il/Smack. Quale versione stai usando nella tua applicazione? –

+0

grazie per la risposta ... Sto usando l'API Smack 4.1.6, ma ieri ho letto alcune segnalazioni di bug e sembra che dipenda dal server. Il mio jid è corretto, quindi non potrebbe essere il problema. Ancora una domanda, La tua connessione, Sei appena entrato con il tuo jid o devo fare delle modifiche su Connection prima di chiamare la vcard di un altro utente? – Opiatefuchs

risposta

7

Il problema che potresti incontrare è il suffisso del JID. Il metodo connection.getUser() restituisce il JID come [email protected]/Smack. Per ottenere i dettagli vCard, è necessario interrogarlo come [email protected] (senza/Smack). Provalo e fammi sapere se funziona.

+0

Fantastico !!. In connection.getUser() ho ricevuto usuario @ jabber/Smack. Provo solo con usuario @ jabber e funziona bene. Grazie!! –

+0

Fantastico! Sono contento che ha funzionato per te – y0da