ネイティブメッセージングアプリを使用せずにMMSを内部的に送信するAndroidアプリケーションに取り組んでいます。https://android.googlesource.comで見つけたネイティブアプリのコードをガイドとして使用しており、実用的なプロトタイプを作成することができました。ただし、電話がWifiに接続されているときにHTTP_Postを作成しようとすると、少し問題が発生します。
以下のコードスニペットでは、MMSネットワーク機能をリクエストし、接続がアクティブであることを示すandroid.net.conn.CONNECTIVITY_CHANGEインテントを待ちます。次に、TYPE_MOBILEのNetworkInfoを要求し、接続されていることを確認します。これが私が問題にぶつかったところです。Wi-Fiが接続されている場合、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を実行しているデバイスをサポートできるようにしたいため、これを試していません。
どんな助けでも大歓迎です。