我正在开发一个 Android 应用程序,该应用程序将在内部发送彩信,而不使用本机消息传递应用程序。我一直在使用我在https://android.googlesource.com上找到的本机应用程序的代码作为指南,并设法创建了一个工作原型。但是,当手机连接到 Wifi 时尝试进行 HTTP_Post 时,我遇到了一个小问题。
在下面的代码片段中,我请求 MMS 网络功能并等待指示连接处于活动状态的 android.net.conn.CONNECTIVITY_CHANGE 意图。然后我请求 TYPE_MOBILE 的 NetworkInfo 并检查它是否已连接。这就是我遇到问题的地方。如果 wifi 已连接,当我调用 info.isConnected() 时,它会返回 false,并且无法发送 MMS HttpPost,因为此帖子必须通过 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;
我可以让它工作的唯一方法是断开wifi,此时info.isConnected()返回true,我可以继续成功地制作HttpPost。但我认为这不是执行此功能的正确方法,因为本机应用程序似乎没有这样做。从我所见,本机消息传递应用程序的 TransactionService.java 使用一个内部的、已弃用的类 NetworkConnectivityListener 来管理连接,但我在其代码中看不到任何修改 Wifi 连接的内容。
有没有人遇到过类似的问题或知道解决它的正确方法?我注意到在 ConnectivityManager 文档中有一个连接类型 TYPE_MOBILE_MMS 但我没有尝试过,因为它只支持运行 2.2 及更高版本的设备,我希望能够支持运行 1.6 的设备。
非常感激任何的帮助。