Это мой первый пост, поэтому я заранее извиняюсь, если это не тот сайт, на который можно отправить этот конкретный вопрос.
Вопрос
Я интегрировал реализацию MMS от Nokia для Android (http://androidbridge.blogspot.com/2011/03/how-to-send-mms-programmatically-in.html) в приложение для Android, которое я пишу, и я могу отправлять MMS со своего персонального устройства Metro PCS в MMSC Metro PCS, и сообщения доставляются любому получателю без проблем.
Вот как я отправляю MMS:
public Boolean sendMMSMessage(final String senderNumber, final String smsText, final File imageFile, final Integer requestId){
byte[] out;
Enumeration keys;
//set image File
setImageFile(imageFile);
//create MMMessage
setMMMessage(new MMMessage());
//add text
addText(getMMMessage(),smsText,"<0>",IMMConstants.CT_TEXT_PLAIN);
//add image file
addFromFile(getMMMessage(),getImageFile(),"<1>",IMMConstants.CT_IMAGE_JPEG);
//set MMEncoder
setMMEncoder(new MMEncoder());
getMMEncoder().setMessage(getMMMessage());
//transaction ID (second parameter) is arbitrary
setMessage(getMMMessage(),"T135d743a6b7",senderNumber);
try {
getMMEncoder().encodeMessage();
out = getMMEncoder().getMessage();
setMMSender(new MMSender());
getMMSender().setMMSCURL("http://mms.metropcs.net:3128/mmsc");
//'min' of sending device. Required by Metro PCS MMSC.
getMMSender().addHeader("X-DEVICE-MIN", min);
setMMResponse(getMMSender().send(out));
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
return (getMMResponse().getResponseCode()==IMMConstants.HTTP_RESPONSE_OK);
}
Мне интересно, можно ли «подправить» код Nokia (если это необходимо), чтобы любое устройство могло отправлять правильно составленный MMS-запрос в MMSC Metro PCS, используя мои «минимальные» учетные данные. Я изучил поток пакетов (через «WireShark») о том, что происходит, когда MMS успешно отправляется с моего конкретного устройства другим получателям, однако при запуске этого же приложения для Android. на другом устройстве (не Metro PCS) сообщения MMS не отправляются, и «WireShark» не помогает объяснить, почему. Может ли кто-нибудь помочь вести меня в направлении, как я мог бы сделать эту работу?
Обновление : может помочь добавление отчетов logcat:
java.net.SocketTimeoutException: Connection timed out
Второе обновление: Я посмотрел другой пост, посвященный этой проблеме. Она называется "Android отправляет изображение через MMS программно (время операции истекло)" , но, к сожалению, в настоящее время нет однозначного ответа, и этот вопрос существует уже два месяца. Я постараюсь увеличить время ожидания чтения, как кто-то предложил (я сомневаюсь, что это причина), но если кто-то ДАЕТ знает, в чем может быть проблема, но просто хочет не дать прямого ответа, это нормально. Мне просто нужен намек на то, где искать.
Третье обновление: Теперь, когда я думаю об этом, мне интересно, является ли здесь IP-адрес отправителя (фактический IP-адрес, используемый устройством). Кто-нибудь может подтвердить?
Четвертое обновление: Я просто более подробно рассмотрел код для 'MMSender.java' (в частности, что происходит с объектом 'HttpURLConnection') и в соответствии с его методом setReadTimeout(ms)
, значением по умолчанию ( '0') в любом случае устанавливает бесконечное время ожидания, и этот метод нигде не вызывается в коде. Однако, только для ударов, я вручную установил это значение на 1 минуту для setConnectionTimeout(ms)
и setReadTimeout(ms)
и, как я подозревал, без кубиков. Та же проблема с тайм-аутом соединения.
Окончательное обновление: Извините. Я только что понял, что скопировал эту строку кода из другой публикации некоторое время назад:
((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE)).startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,"enableSUPL");
и теперь, после более внимательного изучения этого вызова, я задаюсь вопросом, возможно ли, что я предоставляю неправильные значения параметров для startUsingNetworkFeature()
(по крайней мере для устройства, не являющегося Metro PCS, на котором я пытаюсь установить приложение). Я не хочу перегибать мои «обновления» здесь для этого вопроса, но я хочу, чтобы вы, ребята (или девочки), были в курсе, так что ...; если эти значения параметров окажутся проблемой, я обязательно опубликую этот факт, но это будет мое последнее обновление. В то же время, любой совет очень ценится.