2011-01-25 59 views
0

我正在開發一個Android應用程序,該應用程序將在不使用本機通訊應用程序的情況下在內部發送MMS。我一直在使用我在https://android.googlesource.com找到的原生應用程序中的代碼作爲指南,並且設法創建了一個工作原型。 但是,當手機連接到Wifi時嘗試創建HTTP_Post時,我遇到了一個小問題。當wifi處於活動狀態時,MMS發送連接問題(Android)

在下面的代碼片段中,我請求MMS網絡功能並等待android.net.conn.CONNECTIVITY_CHANGE意圖指示連接處於活動狀態。然後,我請求Network_info for TYPE_MOBILE並檢查它是否已連接。這是我遇到的問題。如果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; 

我可以讓它開始工作的唯一方法是通過斷開,此時info.isConnected()返回true,我可以繼續做HttpPost成功的無線網絡連接。但我不認爲這是執行此功能的正確方式,因爲本機應用似乎沒有這樣做。 從我所看到的情況來看,本地消息應用程序的TransactionService.java使用內部的不推薦使用的類NetworkConnectivityListener來管理連接,但是在其代碼中無法看到修改Wifi連接的任何內容。

有沒有人有類似的問題,或知道正確的方法來解決它? 我注意到在ConnectivityManager文檔中有一個連接類型TYPE_MOBILE_MMS,但我沒有嘗試過,因爲它只支持運行2.2及更高版本的設備,我希望能夠支持運行1.6的設備。

任何幫助將不勝感激。

回答

1

我發現這個問題必須在運行2.0及更高版本的設備上使用android.net.ConnectivityManager.TYPE_MOBILE連接類型來完成。有了這些,你需要使用TYPE_MOBILE_MMS,而1.6設備只需使用TYPE_MOBILE。 有沒有必要斷開wifi。

0

當WiFi數據連接打開時,移動數據連接關閉。 您需要檢查兩種類型。

相關問題