我正在开发一个Android应用程序,它将在内部发送MMS而不使用本机消息传递应用程序。我一直在使用我在https://android.googlesource.com找到的本机应用程序中的代码作为指导,并设法创建了一个工作原型。 但是,当手机连接到Wifi时尝试制作HTTP_Post时,我遇到了一个小问题。
在下面的代码片段中,我请求MMS网络功能并等待指示连接处于活动状态的android.net.conn.CONNECTIVITY_CHANGE意图。然后我请求TYIn_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的设备。
非常感谢任何帮助。
答案 0 :(得分:1)
我发现问题与在运行2.0及更高版本的设备上使用android.net.ConnectivityManager.TYPE_MOBILE连接类型有关。有了这些,您需要使用TYPE_MOBILE_MMS,对于1.6设备,只需使用TYPE_MOBILE。 没有必要断开wifi。
答案 1 :(得分:0)
当WiFi数据连接开启时,移动数据连接将关闭。 您需要检查两种类型。