1

現在の Wi-Fi 状態をリッスンするためにブロードキャスト レシーバーを使用しました。そのため、現在の状態をトグル ボタン (setText) のテキスト (connected、connecting、disabled など) に設定します。

それはうまくいきます!

しかし今、私はモバイルデータの状態で同じことをしたいと思っています..

そこで、TelephonyManager を使用して受信機をセットアップしました。

this.registerReceiver(this.DataStateChangedReceiver,
new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED));

次に、wifi レシーバーからコードをコピーして編集しました。

private BroadcastReceiver DataStateChangedReceiver
= new BroadcastReceiver()
{

    @Override
       public void onReceive(Context context, Intent intent) 
    {
        // TODO Auto-generated method stub


    int extraDataState = intent.getIntExtra(TelephonyManager.EXTRA_STATE ,
    TelephonyManager.DATA_DISCONNECTED);

    switch(extraDataState){
    case TelephonyManager.DATA_CONNECTED:
        data_toggle.setChecked(true);


     break;

    case TelephonyManager.DATA_DISCONNECTED:
        data_toggle.setChecked(false);


     break;

    case TelephonyManager.DATA_CONNECTING:
        data_toggle.setChecked(true);


     break;

    case TelephonyManager.DATA_SUSPENDED:
        data_toggle.setChecked(true);


     break;

    }
    }
};

アプリは起動しますが、toogleButton で何も起こりませんでした。TelephonyManager はこれを行う方法が間違っていますか? コネクティビティマネージャー?

モバイルデータをオン/オフする onclicklistener を設定したい。

これをどのように行うかは次の質問です..

4

1 に答える 1

-1

私の仕事では、 ACTION_SCREEN_ON と _OFF でトリックを使用しました......だから、トリックはそのようなものです.... Receiver.classでブール変数を作成し、接続状態が変更されたときにそれを変更します.. ..そして、サービス(またはアクティビティ)では、何をすべきかを意図します.....

    private boolean screenOff; 
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        screenOff = true;
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        screenOff = false;
    }
    Intent i = new Intent(context, InternetService.class);
    i.putExtra("screen_state", screenOff);
    context.startService(i);
}
于 2012-07-19T09:11:44.323 に答える