⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmdecoder.java

📁 nokia彩信发送api和实例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      }      if (FLAG_DEBUG) System.out.println("c_type=("+c_type+") c_headerLen=("+c_headerLen+") c_dataLen=("+c_dataLen+") c_id=("+c_id+")");      MMContent mmc=new MMContent();      mmc.setType(c_type);      mmc.setContentId(c_id);      mmc.setContent(m_In,m_i,c_dataLen);      m_Message.addContent(mmc);      m_i+=c_dataLen;      n++;    }  }  // ---------------------------------------------------------------- MMS Header  private void readMMHeader() {    boolean flag_continue=true;    while (flag_continue && m_i<m_In.length) {      byte currentByte=decodeByte(m_In[m_i++]);      switch (currentByte) {         case FN_MESSAGE_TYPE:             if (FLAG_DEBUG) System.out.println("FN_MESSAGE_TYPE (0C)");             m_Message.setMessageType(m_In[m_i]);             m_i++;             break;         case FN_TRANSACTION_ID:             if (FLAG_DEBUG) System.out.println("FN_TRANSACTION_ID (18)");             m_Message.setTransactionId(readTextString());             break;         case FN_MESSAGE_ID:             if (FLAG_DEBUG) System.out.println("FN_MESSAGE_ID (0B)");             m_Message.setMessageId(readTextString());             break;         case FN_STATUS:             if (FLAG_DEBUG) System.out.println("FN_STATUS (15)");             m_Message.setMessageStatus(m_In[m_i]);             m_i++;             break;         case FN_MMS_VERSION:             if (FLAG_DEBUG) System.out.println("FN_MMS_VERSION (0D)");	     m_Message.setVersion(m_In[m_i]);             m_i++;             break;         case FN_TO:             if (FLAG_DEBUG) System.out.println("FN_TO (17)");	     m_Message.addToAddress(new String (readTextString()) );             break;         case FN_CC:             if (FLAG_DEBUG) System.out.println("FN_CC (02)");	     m_Message.addCcAddress(new String (readTextString()) );             break;         case FN_BCC:             if (FLAG_DEBUG) System.out.println("FN_BCC (01)");	     m_Message.addBccAddress(new String (readTextString()) );             break;         case FN_DATE:             {             if (FLAG_DEBUG) System.out.println("FN_DATE (05)");	     int length=m_In[m_i++];             long msecs=readMultipleByteInt(length)*1000;             m_Message.setDate( new Date(msecs) );             }             break;        case FN_DELIVERY_REPORT:             {    	     if (FLAG_DEBUG) System.out.println("FN_DELIVERY_REPORT (06)");             int value = unsignedByte(m_In[m_i++]);             if (value==0x80)                m_Message.setDeliveryReport(true);             else                m_Message.setDeliveryReport(false);             break;             }         case FN_SENDER_VISIBILITY:             if (FLAG_DEBUG) System.out.println("FN_STATUS (14)");             m_Message.setSenderVisibility(m_In[m_i]);             m_i++;             break;        case FN_READ_REPLY:             {             if (FLAG_DEBUG) System.out.println("FN_READ_REPLY (10)");             int value = unsignedByte(m_In[m_i++]);             if (value==0x80)                m_Message.setReadReply(true);             else                m_Message.setReadReply(false);             break;             }        case FN_FROM:	     {             if (FLAG_DEBUG) System.out.println("FN_FROM (09)");	     int valueLength = m_In[m_i++];	     int addressPresentToken = unsignedByte(m_In[m_i++]);	     if (addressPresentToken == 0x80) { // Address-present-token                m_Message.setFrom(new String (readTextString()) );	     }	     }             break;        case FN_SUBJECT:             if (FLAG_DEBUG) System.out.println("FN_SUBJECT (16)");             m_Message.setSubject( readTextString() );             break;        case FN_MESSAGE_CLASS:             if (FLAG_DEBUG) System.out.println("FN_MESSAGE_CLASS (0A)");             m_Message.setMessageClass(m_In[m_i++]);             break;        case FN_EXPIRY:             {             if (FLAG_DEBUG) System.out.println("FN_EXPIRY (08)");             int valueLength=readValueLength();             int tokenType=unsignedByte(m_In[m_i++]);	     long expiry=0;             if (tokenType==128) { // Absolute-token               int length=m_In[m_i++];               expiry=readMultipleByteInt(length)*1000;	       m_Message.setExpiryAbsolute(true);             }             if (tokenType==129) { // Relative-token	       m_Message.setExpiryAbsolute(false);               // Read the Delta-seconds-value               if (valueLength>3) { // Long Integer                 int length=m_In[m_i++];                 expiry=readMultipleByteInt(length)*1000;               }               else { // Short Integhet (1 OCTECT)                 int b=m_In[m_i]&0x7F;                 expiry=b*1000;                 m_i++;               }               }	      m_Message.setExpiry( new Date(expiry) );             }             break;        case FN_DELIVERY_TIME:             {             if (FLAG_DEBUG) System.out.println("FN_DELIVERY_TIME (07)");             int valueLength=readValueLength();             int tokenType=unsignedByte(m_In[m_i++]);	     long deliveryTime=0;             if (tokenType==128) { // Absolute-token	       m_Message.setDeliveryTimeAbsolute(true);               int length=m_In[m_i++];               deliveryTime=readMultipleByteInt(length)*1000;             }             if (tokenType==129) { // Relative-token	       m_Message.setDeliveryTimeAbsolute(false);               // Read the Delta-seconds-value               if (valueLength>3) { // Long Integer                 int length=m_In[m_i++];                 deliveryTime=readMultipleByteInt(length)*1000;               }               else { // Short Integhet (1 OCTECT)                 int b=m_In[m_i]&0x7F;                 deliveryTime=b*1000;                 m_i++;               }               }	      m_Message.setDeliveryTime( new Date(deliveryTime) );             }	     break;        case FN_PRIORITY:    	     if (FLAG_DEBUG) System.out.println("FN_PRIORITY (0F)");             m_Message.setPriority( m_In[m_i++] );             break;        case FN_CONTENT_TYPE:           if (FLAG_DEBUG) System.out.println("FN_CONTENT_TYPE (04)");           m_Message.setContentType( readContentTypeValue() );           flag_continue=false;           break;      }    }  }  private byte decodeByte(byte value) {    return ( (byte)(value & 0x7F) );  }  private int unsignedByte(byte value) {    if (value<0) {      return (value+256);    } else      return value;  } /**  * Resets the Decoder object.  *  */  public void reset() {    m_Message = null;    m_bMultipartRelated = false;    m_bMessageAvailable = false;    m_bHeaderDecoded = false;    m_In = null;  } /**  * Sets the buffer representing the Multimedia Message to be decoded.  */  public void setMessage(byte buf[]) {    m_Message = new MMMessage();    m_In = buf;    m_bMessageAvailable = true;  } /**  * Decodes the header of the Multimedia Message. After calling this method  * a MMMessage object, containing just the information related to the header and  * without the contents, can be obtained by calling getMessage().  * This method has to be called after setMessage(byte buf[).  */  public void decodeHeader() throws MMDecoderException {    if (m_bMessageAvailable) {      readMMHeader();      m_bHeaderDecoded = true;    } else {      throw new MMDecoderException("Message unavailable. You must call setMessage(byte[] buf) before calling this method.");    }  } /**  * Decodes the body of the Multimedia Message. This method has to be called  * after the method decodeHeader()  */  public void decodeBody() throws MMDecoderException {    if (!m_bHeaderDecoded)      throw new MMDecoderException("You must call decodeHeader() before calling decodeBody()");    if ((m_Message.getContentType()).compareTo("application/vnd.wap.multipart.related")==0)       readMMBodyMultiPartRelated();    else       readMMBodyMultiPartMixed();  } /**  * Decodes the whole Multimedia Message. After calling this method  * a MMMessage object, containing the information related to the header and  * the all contents, can be obtained by calling the method getMessage().  * This method has to be called after setMessage(byte buf[).  */  public void decodeMessage() throws MMDecoderException {    decodeHeader();    if (m_Message.getMessageType()==IMMConstants.MESSAGE_TYPE_M_SEND_REQ)      decodeBody();  }  public MMDecoder(byte buf[]) {    setMessage(buf);  }  public MMDecoder() {  } /**  * Retrieves the MMMessage object. This method has to be called after the calling  * of methods decodeMessage() or decodeHeader().  *  * @return An object representing the decoded Multimedia Message  */  public MMMessage getMessage() {    if (m_bHeaderDecoded)      return m_Message;   else      return null;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -