天天看點

Openfire XMPP asmack開發 android用戶端上傳使用者頭像

Openfire XMPP asmack開發 android用戶端上傳使用者頭像

直接上代碼:

[java]  view plain copy

  1.     private void setUserImage(final XMPPConnection connection,  
  2.             final byte[] image) throws XMPPException {  
  3.         final VCard card = new VCard();  
  4.         card.load(connection);  
  5.         new Thread() {  
  6.             @Override  
  7.             public void run() {  
  8.                 try {  
  9.                     PacketFilter filter = new AndFilter(new PacketIDFilter(  
  10.                             card.getPacketID()), new PacketTypeFilter(IQ.class));  
  11.                     PacketCollector collector = connection  
  12.                             .createPacketCollector(filter);  
  13.                     String encodeImage = StringUtils.encodeBase64(image);  
  14.                     card.setAvatar(image, encodeImage);  
  15.                     card.setEncodedImage(encodeImage);  
  16.                     card.setField("PHOTO", "<TYPE>image/jpg</TYPE><BINVAL>"  
  17.                             + encodeImage + "</BINVAL>", true);  
  18.                     Log.i("other", "上傳頭像的方法!");  
  19.                     card.save(connection);  
  20.                     IQ iq = (IQ) collector.nextResult(SmackConfiguration  
  21.                             .getPacketReplyTimeout());  
  22.                     if (iq != null && iq.getType() == IQ.Type.RESULT) {  
  23.                         Message msg = handler.obtainMessage();  
  24.                         msg.what = 2;  
  25.                         handler.sendMessage(msg);  
  26.                     }  
  27.                 } catch (XMPPException e) {  
  28.                     // TODO Auto-generated catch block  
  29.                     e.printStackTrace();  
  30.                 }  
  31.             }  
  32.         }.start();  
  33.     }  

繼續閱讀