Я пытаюсь создать собственное приложение для обмена сообщениями и настроить MMS. Я хотел бы отправить дополнительную информацию по MMS (например, groupName и некоторые другие метаданные). Я могу успешно отправить MMS-сообщение, используя функции Android SmsManager.sendMultimediaMessage()
& SmsManager.downloadMultimediaMessage()
. Из документации видно, что я смогу использовать configOverrides
для отправки дополнительной информации. НО, когда я пытаюсь скачать MMS, переменные конфигурации всегда пусты ...
Код для отправки MMS:
Bundle configOverrides = new Bundle();
configOverrides.putBoolean(SmsManager.MMS_CONFIG_GROUP_MMS_ENABLED, true);
MmsConfig mmsConfig = MmsConfigManager.getMmsConfig(getContext(), subscriptionId);
if (mmsConfig != null) {
MmsConfig.Overridden overridden = new MmsConfig.Overridden(mmsConfig, new Bundle());
String tempHttpParams = overridden.getHttpParams();
if(tempHttpParams == null || tempHttpParams.equals("")) {
tempHttpParams = "groupName=test";
} else {
tempHttpParams += "|groupName=test";
}
Log.d(TAG, "httpParams: " + tempHttpParams);
configOverrides.putString(SmsManager.MMS_CONFIG_HTTP_PARAMS, tempHttpParams);
configOverrides.putInt(SmsManager.MMS_CONFIG_MAX_MESSAGE_SIZE, overridden.getMaxMessageSize());
Log.d(TAG, "configOverride: " + configOverrides.toString());
}
smsManager.sendMultimediaMessage(getContext(),
pointer.getUri(),
null,
configOverrides,
getPendingIntent());
Код для скачивания MMS:
Bundle configOverrides = new Bundle();
smsManager.downloadMultimediaMessage(getContext(),
contentLocation,
pointer.getUri(),
configOverrides,
getPendingIntent());
waitForResult();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Util.copy(pointer.getInputStream(), baos);
pointer.close();
Log.i(TAG, baos.size() + "-byte response: ");// + Hex.dump(baos.toByteArray()));
RetrieveConf retrieved = (RetrieveConf) new PduParser(baos.toByteArray()).parse();
Log.d(TAG, "configOverrides: " + configOverrides.toString());
Log.d(TAG, "httpParams: " + configOverrides.getString(SmsManager.MMS_CONFIG_HTTP_PARAMS));
Log.d(TAG, "smsManager.getCarrierConfigValues(): " + smsManager.getCarrierConfigValues().toString());
Сведения о регистрации:
D/OutgoingLollipopMmsConnection: httpParams: groupName=test
D/OutgoingLollipopMmsConnection: configOverride: Bundle[{httpParams=groupName=test, enableGroupMms=true, maxMessageSize=1048576}]
I/IncomingLollipopMmsConnection: 350101-byte response:
D/IncomingLollipopMmsConnection: configOverrides: Bundle[{}]
D/IncomingLollipopMmsConnection: httpParams: null
D/IncomingLollipopMmsConnection: smsManager.getCarrierConfigValues(): Bundle[mParcelledData.dataSize=1648]
Я осмотрелся и не могу найти никаких примеров использования пользователем configOverrides. Я пропускаю шаг о том, как их скачать? Или есть лучший способ отправки дополнительных метаданных по MMS? (Я знаю, что раньше разработчикам Lollipop приходилось создавать свои собственные API-интерфейсы MMS, и они в основном были сообщениями HTTP Post, но я подумал, что было бы неплохо использовать API-интерфейсы Android.)