private static String getMultimediaMessageDetails(Context context, Cursor cursor, int size) { int type = cursor.getInt(MessageListAdapter.COLUMN_MMS_MESSAGE_TYPE); if (type == PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND) { return getNotificationIndDetails(context, cursor); } StringBuilder details = new StringBuilder(); Resources res = context.getResources(); long id = cursor.getLong(MessageListAdapter.COLUMN_ID); Uri uri = ContentUris.withAppendedId(Mms.CONTENT_URI, id); MultimediaMessagePdu msg; try { msg = (MultimediaMessagePdu) PduPersister.getPduPersister(context).load(uri); } catch (MmsException e) { Log.e(TAG, "Failed to load the message: " + uri, e); return context.getResources().getString(R.string.cannot_get_details); } // Message Type: Text message. details.append(res.getString(R.string.message_type_label)); details.append(res.getString(R.string.multimedia_message)); if (msg instanceof RetrieveConf) { // From: *** String from = extractEncStr(context, ((RetrieveConf) msg).getFrom()); details.append('\n'); details.append(res.getString(R.string.from_label)); details.append( !TextUtils.isEmpty(from) ? from : res.getString(R.string.hidden_sender_address)); } // To: *** details.append('\n'); details.append(res.getString(R.string.to_address_label)); EncodedStringValue[] to = msg.getTo(); if (to != null) { details.append(EncodedStringValue.concat(to)); } else { Log.w(TAG, "recipient list is empty!"); } // Bcc: *** if (msg instanceof SendReq) { EncodedStringValue[] values = ((SendReq) msg).getBcc(); if ((values != null) && (values.length > 0)) { details.append('\n'); details.append(res.getString(R.string.bcc_label)); details.append(EncodedStringValue.concat(values)); } } // Date: *** details.append('\n'); int msgBox = cursor.getInt(MessageListAdapter.COLUMN_MMS_MESSAGE_BOX); if (msgBox == Mms.MESSAGE_BOX_DRAFTS) { details.append(res.getString(R.string.saved_label)); } else if (msgBox == Mms.MESSAGE_BOX_INBOX) { details.append(res.getString(R.string.received_label)); } else { details.append(res.getString(R.string.sent_label)); } details.append(MessageUtils.formatTimeStampString(context, msg.getDate() * 1000L, true)); // Subject: *** details.append('\n'); details.append(res.getString(R.string.subject_label)); EncodedStringValue subject = msg.getSubject(); if (subject != null) { String subStr = subject.getString(); // Message size should include size of subject. size += subStr.length(); details.append(subStr); } // Priority: High/Normal/Low details.append('\n'); details.append(res.getString(R.string.priority_label)); details.append(getPriorityDescription(context, msg.getPriority())); // Message size: *** KB details.append('\n'); details.append(res.getString(R.string.message_size_label)); details.append((size - 1) / 1000 + 1); details.append(" KB"); return details.toString(); }