使用sendMultimediaMessage发送和读取MMS

时间:2017-07-18 21:15:40

标签: android telephony mms android-mms

我知道有很多关于此问题的类似的,较旧的问题,但我没有找到我需要的运气。

发送

我希望能够使用Android的<WinInet.h>功能发送彩信。更具体地说,我想提供一个电话号码,一个文本字符串或一个图像的URI,然后发送消息,然后将结果广播为SmsManager.sendMultimediaMessage

我可能已经看了十几个关于这个的SO问题,没有运气。

作为一个例子,这里是我如何实现这个的SMS版本。注意该方法如何将消息存储在数据库中,然后扫描它并返回ID。

PendingIntent

我想使用public int sendSms(String number, String text); ContentValues values = new ContentValues(); long threadId = getOrCreateThreadId(getApplicationContext(), number); values.put(Telephony.Sms.ADDRESS, number); values.put(Telephony.Sms.DATE, System.currentTimeMillis()); values.put(Telephony.Sms.DATE_SENT, System.currentTimeMillis()); values.put(Telephony.Sms.READ, 1); values.put(Telephony.Sms.TYPE, Telephony.Sms.MESSAGE_TYPE_OUTBOX); values.put(Telephony.Sms.THREAD_ID, threadId); values.put(Telephony.Sms.BODY, text); getContentResolver().insert(Telephony.Sms.Inbox.CONTENT_URI, values); Cursor c = getContentResolver().query(Telephony.Sms.CONTENT_URI, null, null, null, "_id desc"); int id = -1; if (c.moveToFirst()) id = c.getInt(c.getColumnIndexOrThrow(BaseColumns._ID)); c.close(); Log.i("MessagingService", "Sending message: " + text); ArrayList<String> parts = SmsManager.getDefault().divideMessage(text); ArrayList<PendingIntent> pendingIntents = new ArrayList<>(); for (String i : parts) { Intent intent; if (id != -1) { intent = new Intent(MainActivity.MSG_STATUS_CHANGE); intent.putExtra("id", id); } else { intent = new Intent(MainActivity.RUN_CODE); intent.putExtra("type", "reload-thread"); intent.putExtra("content", String.valueOf(threadId)); } pendingIntents.add(PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); } StatusChangeReceiver.pendingPartCounts.put(id, parts.size()); SmsManager.getDefault().sendMultipartTextMessage(number, null, parts, pendingIntents, null); return id; } 做类似的事情。请注意,我正在使用Android 5.0(API级别21),但我有sendMultimediaMessage的自定义实现以实现兼容性。

此外,正在阅读类似于阅读短信的彩信吗?如果没有,我将如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我创建了sample project来说明downloadMultimediaMessagesendMultimediaMessage在Android 5及更高版本的设备上的用法。