@Override public void onSend(MasterSecret masterSecret) throws MmsException, IOException, NoSuchMessageException { MmsDatabase database = DatabaseFactory.getMmsDatabase(context); SendReq message = database.getOutgoingMessage(masterSecret, messageId); try { deliver(masterSecret, message); database.markAsPush(messageId); database.markAsSecure(messageId); database.markAsSent(messageId, "push".getBytes(), 0); } catch (InvalidNumberException | RecipientFormattingException e) { Log.w(TAG, e); database.markAsSentFailed(messageId); notifyMediaMessageDeliveryFailed(context, messageId); } catch (EncapsulatedExceptions e) { Log.w(TAG, e); if (!e.getUnregisteredUserExceptions().isEmpty()) { database.markAsSentFailed(messageId); } for (UntrustedIdentityException uie : e.getUntrustedIdentityExceptions()) { IncomingIdentityUpdateMessage identityUpdateMessage = IncomingIdentityUpdateMessage.createFor( message.getTo()[0].getString(), uie.getIdentityKey()); DatabaseFactory.getEncryptingSmsDatabase(context) .insertMessageInbox(masterSecret, identityUpdateMessage); database.markAsSentFailed(messageId); } notifyMediaMessageDeliveryFailed(context, messageId); } }
public ExpiringMessageManager(Context context) { this.context = context.getApplicationContext(); this.smsDatabase = DatabaseFactory.getSmsDatabase(context); this.mmsDatabase = DatabaseFactory.getMmsDatabase(context); executor.execute(new LoadTask()); executor.execute(new ProcessTask()); }
@Override public void onCanceled() { DatabaseFactory.getMmsDatabase(context).markAsSentFailed(messageId); }