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