Search in sources :

Example 1 with NotificationInd

use of com.google.android.mms.pdu_alt.NotificationInd in project qksms by moezbhatti.

the class DownloadManager method markState.

public void markState(final Uri uri, int state) {
    // Notify user if the message has expired.
    try {
        NotificationInd nInd = (NotificationInd) PduPersister.getPduPersister(mContext).load(uri);
        if ((nInd.getExpiry() < System.currentTimeMillis() / 1000L) && (state == STATE_DOWNLOADING || state == STATE_PRE_DOWNLOADING)) {
            mHandler.post(new Runnable() {

                public void run() {
                    Toast.makeText(mContext, R.string.service_message_not_found, Toast.LENGTH_LONG).show();
                }
            });
            SqliteWrapper.delete(mContext, mContext.getContentResolver(), uri, null, null);
            return;
        }
    } catch (MmsException e) {
        Timber.e(e, e.getMessage());
        return;
    }
    // Notify user if downloading permanently failed.
    if (state == STATE_PERMANENT_FAILURE) {
        mHandler.post(new Runnable() {

            public void run() {
                try {
                    Toast.makeText(mContext, getMessage(uri), Toast.LENGTH_LONG).show();
                } catch (MmsException e) {
                    Timber.e(e, e.getMessage());
                }
            }
        });
    } else if (!mAutoDownload) {
        state |= DEFERRED_MASK;
    }
    // Use the STATUS field to store the state of downloading process
    // because it's useless for M-Notification.ind.
    ContentValues values = new ContentValues(1);
    values.put(Mms.STATUS, state);
    SqliteWrapper.update(mContext, mContext.getContentResolver(), uri, values, null, null);
}
Also used : ContentValues(android.content.ContentValues) MmsException(com.google.android.mms.MmsException) NotificationInd(com.google.android.mms.pdu_alt.NotificationInd)

Example 2 with NotificationInd

use of com.google.android.mms.pdu_alt.NotificationInd in project qksms by moezbhatti.

the class MessageUtils method getNotificationIndDetails.

private static String getNotificationIndDetails(Context context, Cursor cursor) {
    StringBuilder details = new StringBuilder();
    Resources res = context.getResources();
    long id = cursor.getLong(MessageColumns.COLUMN_ID);
    Uri uri = ContentUris.withAppendedId(Mms.CONTENT_URI, id);
    NotificationInd nInd;
    try {
        nInd = (NotificationInd) 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: Mms Notification.
    details.append(res.getString(R.string.message_type_label));
    details.append(res.getString(R.string.multimedia_notification));
    // From: ***
    String from = extractEncStr(context, nInd.getFrom());
    details.append("\n\n");
    details.append(res.getString(R.string.from_label));
    details.append(!TextUtils.isEmpty(from) ? from : res.getString(R.string.hidden_sender_address));
    // Date: ***
    details.append("\n\n");
    details.append(res.getString(R.string.expire_on, MessageUtils.formatTimeStampString(context, nInd.getExpiry() * 1000L, true)));
    // Subject: ***
    details.append("\n\n");
    details.append(res.getString(R.string.subject_label));
    EncodedStringValue subject = nInd.getSubject();
    if (subject != null) {
        details.append(subject.getString());
    }
    // Message class: Personal/Advertisement/Infomational/Auto
    details.append("\n\n");
    details.append(res.getString(R.string.message_class_label));
    details.append(new String(nInd.getMessageClass()));
    // Message size: *** KB
    details.append("\n\n");
    details.append(res.getString(R.string.message_size_label));
    details.append(String.valueOf((nInd.getMessageSize() + 1023) / 1024));
    details.append(context.getString(R.string.kilobyte));
    return details.toString();
}
Also used : MmsException(com.google.android.mms.MmsException) EncodedStringValue(com.google.android.mms.pdu_alt.EncodedStringValue) NotificationInd(com.google.android.mms.pdu_alt.NotificationInd) Resources(android.content.res.Resources) Uri(android.net.Uri)

Example 3 with NotificationInd

use of com.google.android.mms.pdu_alt.NotificationInd in project qksms by moezbhatti.

the class MmsReceivedReceiver method getNotificationTask.

private List<CommonAsyncTask> getNotificationTask(Context context, Intent intent, byte[] response) {
    if (response.length == 0) {
        Timber.v("MmsReceivedReceiver.sendNotification blank response");
        return null;
    }
    if (getMmscInfoForReceptionAck() == null) {
        Timber.v("No MMSC information set, so no notification tasks will be able to complete");
        return null;
    }
    final GenericPdu pdu = (new PduParser(response, new MmsConfig.Overridden(new MmsConfig(context), null).getSupportMmsContentDisposition())).parse();
    if (pdu == null || !(pdu instanceof RetrieveConf)) {
        Timber.e("MmsReceivedReceiver.sendNotification failed to parse pdu");
        return null;
    }
    try {
        final NotificationInd ind = getNotificationInd(context, intent);
        final MmscInformation mmsc = getMmscInfoForReceptionAck();
        final TransactionSettings transactionSettings = new TransactionSettings(mmsc.mmscUrl, mmsc.mmsProxy, mmsc.proxyPort);
        final List<CommonAsyncTask> responseTasks = new ArrayList<>();
        responseTasks.add(new AcknowledgeIndTask(context, ind, transactionSettings, (RetrieveConf) pdu));
        responseTasks.add(new NotifyRespTask(context, ind, transactionSettings));
        return responseTasks;
    } catch (MmsException e) {
        Timber.e(e, "error");
        return null;
    }
}
Also used : PduParser(com.google.android.mms.pdu_alt.PduParser) NotificationInd(com.google.android.mms.pdu_alt.NotificationInd) ArrayList(java.util.ArrayList) MmsException(com.google.android.mms.MmsException) MmsConfig(com.android.mms.service_alt.MmsConfig) TransactionSettings(com.android.mms.transaction.TransactionSettings) GenericPdu(com.google.android.mms.pdu_alt.GenericPdu) RetrieveConf(com.google.android.mms.pdu_alt.RetrieveConf)

Example 4 with NotificationInd

use of com.google.android.mms.pdu_alt.NotificationInd in project qksms by moezbhatti.

the class DownloadManager method getMessage.

private String getMessage(Uri uri) throws MmsException {
    NotificationInd ind = (NotificationInd) PduPersister.getPduPersister(mContext).load(uri);
    EncodedStringValue v = ind.getSubject();
    String subject = (v != null) ? v.getString() : mContext.getString(R.string.no_subject);
    String from = mContext.getString(R.string.unknown_sender);
    return mContext.getString(R.string.dl_failure_notification, subject, from);
}
Also used : EncodedStringValue(com.google.android.mms.pdu_alt.EncodedStringValue) NotificationInd(com.google.android.mms.pdu_alt.NotificationInd)

Aggregations

NotificationInd (com.google.android.mms.pdu_alt.NotificationInd)4 MmsException (com.google.android.mms.MmsException)3 EncodedStringValue (com.google.android.mms.pdu_alt.EncodedStringValue)2 ContentValues (android.content.ContentValues)1 Resources (android.content.res.Resources)1 Uri (android.net.Uri)1 MmsConfig (com.android.mms.service_alt.MmsConfig)1 TransactionSettings (com.android.mms.transaction.TransactionSettings)1 GenericPdu (com.google.android.mms.pdu_alt.GenericPdu)1 PduParser (com.google.android.mms.pdu_alt.PduParser)1 RetrieveConf (com.google.android.mms.pdu_alt.RetrieveConf)1 ArrayList (java.util.ArrayList)1