Конфиг MMS-переопределений не отправляется - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь создать собственное приложение для обмена сообщениями и настроить 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.)

...