2015-06-05 8 views
5

में स्मैक (एंड्रॉइड) के साथ लोड वीकार्ड मैं एंड्रॉइड मंच पर एक्सएमपीपी प्रोटोकॉल और ओपनफायर सर्वर के साथ एक मैसेजिंग एप्लिकेशन लागू कर रहा हूं। मुझे अपना खुद का वीकार्ड और अन्य यूजर वीकार्ड बचाने और लोड करने की ज़रूरत है। फिलहाल, मैं अपने vCard को सर्वर पर रखने में कामयाब रहा और इसे फिर से लोड कर सकता हूं। समस्या अन्य उपयोगकर्ताओं Vcards के साथ है, सर्वर हमेशा XMPPError लौटाता है: सुविधा-लागू नहीं - रद्द करें।ओपनफायर सर्वर

मैं इस पुस्तकालयों का उपयोग:

मेरे अपने Vcard (कार्य ठीक) को बचाओ:

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' 

कोड दिखाएं।

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

मेरे अपने Vcard (कार्य ठीक)

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

समस्या यहाँ है लोड करें। अन्य उपयोगकर्ता लोड करें Vcard:

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

उपयोगकर्ता नाम Vcard लोड करने के लिए सही है।

कोई विचार?

अग्रिम धन्यवाद।

+0

आशा है कि आप इसे देख रहे हैं, यह एक पुरानी पोस्ट है, लेकिन मुझे बिल्कुल वही समस्या मिली है। लेकिन जो मैं जिस लोड को लोड करने का प्रयास करता हूं वह स्मैक एक्सटेंशन के बिना [email protected] है। क्या आपको कोई विचार है कि यह क्यों काम नहीं करता है? – Opiatefuchs

+0

mmm मैंने बिना किसी समस्या के उपयोगकर्ता के जिद के साथ अपनी समस्या का समाधान किया। आप अपने आवेदन में किस संस्करण का उपयोग कर रहे हैं? –

+0

उत्तर के लिए धन्यवाद ... मैं स्मैक 4.1.6 एपीआई का उपयोग कर रहा हूं, लेकिन कल मैंने कुछ बग रिपोर्ट पढ़ी और ऐसा लगता है कि यह सर्वर निर्भर है। मेरी जिद उचित है, इसलिए समस्या नहीं हो सकती है। एक और सवाल, आपका कनेक्शन, क्या आप अभी अपने जेड के साथ लॉग इन हैं या क्या मुझे किसी अन्य उपयोगकर्ता के वीकार्ड को कॉल करने से पहले कनेक्शन पर कुछ बदलाव करने की ज़रूरत है? – Opiatefuchs

उत्तर

7

जो समस्या आप सामना कर रहे हैं वह जेआईडी के लिए प्रत्यय है। कनेक्शन.getUser() विधि JID को [email protected]/Smack के रूप में लौटाती है। VCard विवरण प्राप्त करने के लिए, आपको इसे [email protected] (बिना/स्मैक के) के रूप में पूछने की आवश्यकता है। इसे आज़माएं और अगर यह काम करता है तो मुझे बताएं।

+0

शानदार !! Connection.getUser() में मुझे usuario @ jabber/smack प्राप्त होगा। मैं केवल usuario @ jabber के साथ प्रयास करता हूं और यह ठीक काम करता है। धन्यवाद!! –

+0

बहुत बढ़िया! खुशी है कि यह आपके लिए कारगर रहा – y0da

संबंधित मुद्दे