Я попробовал использовать smsManager.sendMultimediaMessage(), как описано на этой странице: sendMultimediaMessage
Однако , я продолжаю сталкиваться со сбоями и полагаю, что проблема может быть связана с созданием файла PDU.
Я ссылался на этот сайт, чтобы узнать формат данных:
dataFormatНесмотря на многочисленные попытки, мне это не удалось, поэтому я обращаюсь за помощью. Как правильно создать contentUri, который является вторым параметром для smsManager.sendMultimediaMessage()?
Сообщение должно быть отправлено в фоновом режиме без открытия приложения для обмена сообщениями по умолчанию.
мой код такой
Код: Выделить всё
@ReactMethod
public void sendDirectSms(String phoneNumber, String msg) {
try {
SmsManager smsManager = SmsManager.getDefault();
// create MMS
ContentValues mmsValues = new ContentValues();
mmsValues.put(Telephony.Mms.SUBJECT, "Subject");
Uri mmsUri = this.context.getApplicationContext().getContentResolver().insert(Telephony.Mms.CONTENT_URI, mmsValues);
if (mmsUri == null) {
Log.e("SendDirectSms", "Failed to create MMS message.");
return;
}
String messageId = mmsUri.getLastPathSegment();
// add adress
Uri addrUri = Uri.withAppendedPath(mmsUri, "addr");
ContentValues addrValues = new ContentValues();
addrValues.put(Telephony.Mms.Addr.MSG_ID, messageId);
addrValues.put(Telephony.Mms.Addr.ADDRESS, phoneNumber);
addrValues.put(Telephony.Mms.Addr.TYPE, 137);
// addrValues.put(Telephony.Mms.Addr.TYPE, PduHeaders.TO);
Uri insertedAddrUri = this.context.getApplicationContext().getContentResolver().insert(addrUri, addrValues);
// // 3. add text part
Uri partUri = Uri.withAppendedPath(mmsUri, "part");
ContentValues partValues = new ContentValues();
partValues.put(Telephony.Mms.Part.MSG_ID, messageId);
partValues.put(Telephony.Mms.Part.CONTENT_TYPE, "text/plain");
partValues.put(Telephony.Mms.Part.TEXT, msg);
Uri insertedPartUri = context.getApplicationContext().getContentResolver().insert(partUri, partValues);
smsManager.sendMultimediaMessage(this.context.getApplicationContext(), mmsUri, null, null, null);
} catch (Exception ex) {
System.out.println("couldn't send message.");
}
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... smsmanager