2015-06-05 29 views
5

Android platformunda XMPP protokolü ve Openfire sunucusuyla bir mesajlaşma uygulaması uyguluyorum. Kendi Vcard'ımı ve diğer kullanıcılarını kaydetmem ve yüklemem gerekiyor. Şu anda vCard'ı sunucuda tutmayı başardım ve tekrar yükleyebilirim. Sorun diğer kullanıcılar Vcards ile, sunucu her zaman XMPPError döndürür: özellik-değil-iptal -.Openfire Server'da Smack (Android) ile Vcards Yükle (

bu kütüphaneleri kullanmak:

kendi vCard (İş ince) Kaydet:

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' 

kodunu göster.

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

kendi vCard (İş ince)

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

sorun burada yükleyin. Başka bir kullanıcı Vcard yükleyin:

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

Vcard yüklenen kullanıcı adı doğrudur.

Herhangi bir fikrin var mı?

Şimdiden teşekkürler.

+0

Bunu görüyorsunuz, daha eski bir yazı, ama tam olarak aynı sorunla karşılaştım. Ama yüklemeye çalıştığım jit Smack uzantısı olmadan [email protected] Neden işe yaramadığına dair bir fikrin var mı? – Opiatefuchs

+0

mmm Sorunumu/Smack olmadan kullanıcının jidiyle çözdüm. Uygulamanızda hangi sürümü kullanıyorsunuz? –

+0

Cevabınız için teşekkürler ... Smack 4.1.6 API kullanıyorum, Ama dün bazı hata raporları okuyorum ve sunucuya bağımlı görünüyor. Benim jidim uygun, bu yüzden sorun olamazdı. Bir soru daha var, bağlantınız, Jid'le yeni giriş yaptınız mı yoksa başka bir kullanıcının vcardını aramadan önce Bağlantıda bazı değişiklikler yapmalı mıyım? – Opiatefuchs

cevap

7

Karşılaştığınız sorun, JID'nin son ekidir. Connection.getUser() yöntemi, JID'yi [email protected]/Smack olarak döndürür. VCard ayrıntılarını almak için, onu [email protected] (/ Smack olmadan) olarak sorgulamanız gerekir. Bunu deneyin ve işe yararsa bana bildirin.

+0

Fantastik !!. Connection.getUser() 'da usuario @ jabber/Smack'i aldım. Sadece usuario @ jabber ile çalışıyorum ve iyi çalışıyor. Teşekkür ederim!! –

+0

Müthiş! Memnun oldum senin için – y0da