Проблемы с отправкой MMS при подключении к Wi-Fi (Android) - PullRequest
0 голосов
/ 25 января 2011

Я работаю над приложением Android, которое будет отправлять MMS внутри, без использования собственного приложения обмена сообщениями.Я использовал код из нативного приложения, которое я нашел в https://android.googlesource.com в качестве руководства, и мне удалось создать работающий прототип.Тем не менее, у меня есть небольшая проблема при попытке сделать HTTP_Post, когда телефон подключен к Wi-Fi.

В приведенном ниже фрагменте кода я запрашиваю функцию сети MMS и жду намерения android.net.conn.CONNECTIVITY_CHANGE, указывающего, что соединение активно.Затем я запрашиваю NetworkInfo для TYPE_MOBILE и проверяю, что он подключен.Вот где я столкнулся с проблемой.Если Wi-Fi подключен, когда я вызываю info.isConnected (), он возвращает false, и сообщение HttpPost MMS не может быть сделано, поскольку это сообщение должно быть сделано через соединение 3G / GPRS.

ConnectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableMMS");
//wait for android.net.conn.CONNECTIVITY_CHANGE intent
NetworkInfo info = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (!info.isConnected())
     return;

Единственный способ заставить его работать, это отключить Wi-Fi, после чего info.isConnected () возвращает true, и я могу продолжить, чтобы успешно выполнить HttpPost.Но я не думаю, что это правильный способ выполнения этой функции, поскольку нативное приложение этого не делает.Из того, что я вижу, TransactionService.java собственного приложения для обмена сообщениями использует внутренний устаревший класс NetworkConnectivityListener для управления соединением, но я не вижу ничего в его коде, который изменяет соединение Wi-Fi.

Есть кто-нибудьбыла похожая проблема к этому или знаете правильный способ обойти это?Я заметил, что в документации по ConnectivityManager есть тип подключения TYPE_MOBILE_MMS, но я не пробовал это делать, поскольку он поддерживается только устройствами с версией 2.2 и выше, и я хочу иметь возможность поддерживать устройства под управлением 1.6.

Любая помощь будетнаиболее ценится.

Ответы [ 2 ]

1 голос
/ 27 января 2011

Я обнаружил, что проблема связана с использованием типа соединения android.net.ConnectivityManager.TYPE_MOBILE на устройствах с версией 2.0 и выше. Для этого вам нужно использовать TYPE_MOBILE_MMS, а для устройств 1.6 просто использовать TYPE_MOBILE. Нет необходимости отключать Wi-Fi.

0 голосов
/ 25 января 2011

Когда Wi-Fi-соединение для передачи данных включено, мобильное соединение для передачи данных отключается. Вам нужно проверить оба типа.

...