@Override protected Void doInBackground(Uri... params) { if (params.length < 1) { Log.e(TAG, "ImageLoaderTask called with no Uri"); return null; } try { Uri uri = params[0]; // Decode the image from the Uri into a bitmap [1], and shrink it // according to the user's settings. // [1]: // http://stackoverflow.com/questions/13930009/how-can-i-get-an-image-from-another-application InputStream inputStream = mContext.getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); long maxAttachmentSize = SmsHelper.getSendSettings(mContext).getMaxAttachmentSize(); bitmap = ImageUtils.shrink(bitmap, 90, maxAttachmentSize); // Now, rotation the bitmap according to the Exif data. final int rotation = ImageUtils.getOrientation(mContext, uri); Matrix matrix = new Matrix(); matrix.postRotate(rotation); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); // Can't post UI updates on a background thread. final Bitmap imageBitmap = bitmap; mHandler.post( new Runnable() { @Override public void run() { setAttachment(imageBitmap); } }); } catch (FileNotFoundException | NullPointerException e) { // Make a toast to the user that the file they've requested to view // isn't available. mHandler.post( new Runnable() { @Override public void run() { Toast.makeText( mContext, mRes.getString(R.string.error_file_not_found), Toast.LENGTH_SHORT) .show(); } }); } return null; }
public void sendSms() { String body = mReplyText.getText().toString(); final Drawable attachment; if (mAttachment.hasAttachment()) { attachment = mAttachment.getDrawable(); } else { attachment = null; } clearAttachment(); String[] recipients = null; if (mConversation != null) { recipients = mConversation.getRecipients().getNumbers(); for (int i = 0; i < recipients.length; i++) { recipients[i] = PhoneNumberUtils.stripSeparators(recipients[i]); } } else if (mRecipientProvider != null) { recipients = mRecipientProvider.getRecipientAddresses(); } // If we have some recipients, send the message! if (recipients != null && recipients.length > 0) { mReplyText.setText(""); AnalyticsManager.getInstance() .sendEvent( AnalyticsManager.CATEGORY_MESSAGES, AnalyticsManager.ACTION_SEND_MESSAGE, mLabel); Transaction sendTransaction = new Transaction(mContext, SmsHelper.getSendSettings(mContext)); com.moez.QKSMS.mmssms.Message message = new com.moez.QKSMS.mmssms.Message(body, recipients); message.setType(com.moez.QKSMS.mmssms.Message.TYPE_SMSMMS); if (attachment != null) { message.setImage(ImageUtils.drawableToBitmap(attachment)); } // Notify the listener about the new text message if (mOnSendListener != null) { mOnSendListener.onSend(recipients, message.getSubject()); } long threadId = mConversation != null ? mConversation.getThreadId() : 0; if (!message.toString().equals("")) { sendTransaction.sendNewMessage(message, threadId); } NotificationManager.update(mContext); if (mConversationLegacy != null) { mConversationLegacy.markRead(); } // Reset the image button state updateButtonState(); // Otherwise, show a toast to the user to prompt them to add recipients. } else { Toast.makeText(mContext, mRes.getString(R.string.error_no_recipients), Toast.LENGTH_SHORT) .show(); } }