1

MMS の TYPE_MOBILE に startUsingNetworkFeature を使用しようとしていますが、Sprint 電話でテストするたびに、代わりに WIFI サービスが開始されます。ATT と Verizon の電話で問題なく動作します (3 つのネットワークすべてで、テスト電話に Galaxy Nexus を使用しています)。

これが私のコードと関連するlogcat出力です:

    public class main extends FragmentActivity {

        private static final String TAG = "main";
        private ConnectivityManager mConnMgr;
        private ConnectivityBroadcastReceiver mReceiver;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mConnMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            mReceiver = new ConnectivityBroadcastReceiver();


            beginConnectivity();

        }

        private int beginConnectivity() {

            int result = mConnMgr.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, PhoneEx.FEATURE_ENABLE_MMS);

            Log.v(TAG, "beginMmsConnectivity: result=" + result);

            return result;
        }

        @Override
        protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
            registerReceiver(mReceiver, intentFilter);

        }

        @Override
        protected void onPause() {
            // TODO Auto-generated method stub
            super.onPause();

            unregisterReceiver(mReceiver);
        }

        private class ConnectivityBroadcastReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                Log.w(TAG, "ConnectivityBroadcastReceiver.onReceive() action: " + action);

                NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);

                NetworkInfo mmsNetworkInfo = mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
                Log.v(TAG, "" + mmsNetworkInfo);


                Log.v(TAG, "Handle ConnectivityBroadcastReceiver.onReceive(): " + networkInfo);

                // Check availability of the mobile network.
                if ((networkInfo == null) || (networkInfo.getType() != ConnectivityManager.TYPE_MOBILE_MMS)) {
                    Log.v(TAG, "   type is not TYPE_MOBILE_MMS, bail");
                    return;
                }

                if (!networkInfo.isConnected()) {
                    Log.v(TAG, "   TYPE_MOBILE_MMS not connected, bail");
                }

                return;
            }
        };

    }

11-14 10:41:12.951: V/main(2772): NetworkInfo:タイプ: mobile_mms[CDMA - EvDo rev. A]、状態: 切断/IDLE、理由: (未指定)、追加: (なし)、ローミング: false、フェイルオーバー: false、isAvailable: true 11-14 10:41:12.951: V/main(2772): ConnectivityBroadcastReceiver を処理する.onReceive(): NetworkInfo:タイプ: WIFI[]、状態: 接続/接続、理由: (未指定)、追加: (なし)、ローミング: false、フェイルオーバー: false、isAvailable: true 11-14 10:41:12.951 : V/main(2772): タイプが TYPE_MOBILE_MMS ではありません、保釈

比較のために、TYPE_MOBILE_MMS のステータスもログに記録します。コードが TYPE_MOBILE_MMS ネットワーク機能を開始し、ブロードキャスト レシーバーがそのネットワークのネットワーク変更イベントを受信することを期待していますが、常に wifi の変更を取得するだけで、正しいネットワークをアクティブにすることはありません。

Sprint の携帯電話に何かユニークな点はありますか? 繰り返しますが、これは ATT と Verizon で正常に動作し、すべて最新のアップデートを適用した Galaxy Nexus スマートフォンで動作します。

更新:これが私の許可リストです

  • 「android.permission.ACCESS_NETWORK_STATE」

  • 「android.permission.CHANGE_NETWORK_STATE」

更新 2: Sprint で Galaxy Nexus に取り組んでいますが、Sprint で HTC Thunderbolt には取り組んでいません。GNex では、設定でデータが無効になっていました

更新 3: HTC Thunderbolt で、コードを実行してからモバイル データ設定を確認すると、モバイル ネットワークが「サービスが利用できないため切断されました」と表示されます。ただし、アプリを強制終了すると、モバイル ネットワークは正常に戻りますか? このコードの何かが原因で、HTC Thunderbolt でネットワークがオフになります。

更新 4:テスト中に次の logcat 出力が表示されます。

11-14 14:49:35.866: V/main(1078): TYPE_MOBILE ステータス NetworkInfo: タイプ: モバイル[CDMA - EvDo rev. A]、状態: 切断/切断、理由: dataConnectionDenied、追加: (なし)、ローミング: false、フェイルオーバー: false、isAvailable: true 11-14 14:49:35.866: V/main(1078): TYPE_MOBILE_MMS ステータス NetworkInfo:タイプ: mobile_mms[CDMA - EvDo rev. A]、状態: 切断/IDLE、理由: psRestrictDisabled、追加: (なし)、ローミング: false、フェイルオーバー: false、isAvailable: true

接続要求が拒否されているようですが、なぜこれが起こっているのか誰か知っていますか?

4

0 に答える 0