接続状態の変更を処理するために PhoneStateListener を使用しようとしています。サービスの onCreate メソッド内にリスナーを登録しました。電話の設定からwifi接続を有効または無効にすると、リスナーのオーバーライドされたメソッドonDataConnectionStateChanged(int state)が呼び出されますが、どちらの場合も「状態」パラメーターは0で、常にスイッチの最初のケースに入ります。メソッドの実装は次のとおりです。
PhoneStateListener listener = new PhoneStateListener() {
@Override
public void onDataConnectionStateChanged(int state) {
super.onDataConnectionStateChanged(state);
switch (state) {
case TelephonyManager.DATA_DISCONNECTED:
Toast.makeText(LocationService.this, "Data connection lost!", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.DATA_CONNECTED:
Toast.makeText(LocationService.this, "Data connection available!", Toast.LENGTH_LONG).show();
break;
}
}
};
結果は常に、「データ接続が失われました!」というトースト メッセージです。ここで単純なものが欠けていると確信していますが、何が問題なのかわかりません。