Пример #1
0
    public void onItemLoaded(Object result, Throwable exception) {
      if (exception != null) {
        Log.e(TAG, "PduLoadedMessageItemCallback PDU couldn't be loaded: ", exception);
        return;
      }
      if (mItemLoadedFuture != null) {
        synchronized (mItemLoadedFuture) {
          mItemLoadedFuture.setIsDone(true);
        }
      }
      PduLoaderManager.PduLoaded pduLoaded = (PduLoaderManager.PduLoaded) result;
      long timestamp = 0L;
      if (PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND == mMessageType) {
        mDeliveryStatus = DeliveryStatus.NONE;
        NotificationInd notifInd = (NotificationInd) pduLoaded.mPdu;
        interpretFrom(notifInd.getFrom(), mMessageUri);
        // Borrow the mBody to hold the URL of the message.
        mBody = new String(notifInd.getContentLocation());
        mMessageSize = (int) notifInd.getMessageSize();
        timestamp = notifInd.getExpiry() * 1000L;
      } else {
        MultimediaMessagePdu msg = (MultimediaMessagePdu) pduLoaded.mPdu;
        mSlideshow = pduLoaded.mSlideshow;
        mAttachmentType = SmsHelper.getAttachmentType(mSlideshow, msg);

        if (mMessageType == PduHeaders.MESSAGE_TYPE_RETRIEVE_CONF) {
          if (msg == null) {
            interpretFrom(null, mMessageUri);
          } else {
            RetrieveConf retrieveConf = (RetrieveConf) msg;
            interpretFrom(retrieveConf.getFrom(), mMessageUri);
            timestamp = retrieveConf.getDate() * 1000L;
          }
        } else {
          // Use constant string for outgoing messages
          mContact = mAddress = mContext.getString(R.string.messagelist_sender_self);
          timestamp = msg == null ? 0 : msg.getDate() * 1000L;
        }

        SlideModel slide = mSlideshow == null ? null : mSlideshow.get(0);
        if ((slide != null) && slide.hasText()) {
          TextModel tm = slide.getText();
          mBody = tm.getText();
          mTextContentType = tm.getContentType();
        }

        mMessageSize = mSlideshow == null ? 0 : mSlideshow.getTotalMessageSize();

        mDeliveryStatus = getDeliveryStatus(mDeliveryStatusString);
        mReadReport = getReadReport(mReadReportString);
      }
      if (!isOutgoingMessage()) {
        if (PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND == mMessageType) {
          mTimestamp =
              mContext.getString(
                  R.string.expire_on, DateFormatter.getMessageTimestamp(mContext, timestamp));
        } else {
          mTimestamp = DateFormatter.getMessageTimestamp(mContext, timestamp);
        }
      }
      if (mPduLoadedCallback != null) {
        mPduLoadedCallback.onPduLoaded(MessageItem.this);
      }
    }