依次启用和禁用飞行模式Android



我只是安卓系统的初学者。我有一个Android代码,它有一个按钮。单击按钮后,它应该调用AirPlane模式,然后再次返回正常模式。这是我的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // load controls
    tvStatus = (TextView)findViewById(R.id.tvStatus);
    togState = (Button)findViewById(R.id.togState);
    // set click event for button
    togState.setOnClickListener(new OnClickListener() {                     
                    @Override
                    public void onClick(View v) {
                            // check current state first
                            boolean state = isAirplaneMode();
                            // toggle the state
                            toggleAirplaneMode(state);
                            state = isAirplaneMode();
                            // toggle the state
                            toggleAirplaneMode(state);
                    }
            });
}
public void toggleAirplaneMode(boolean state) {
    // toggle airplane mode
    Settings.System.putInt(this.getContentResolver(),Settings.System.AIRPLANE_MODE_ON, state ? 0 : 1);
    // broadcast an intent to inform
    Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
    intent.putExtra("state", !state);
    sendBroadcast(intent);
}

public boolean isAirplaneMode() {
    return Settings.System.getInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;
}

}

这里的问题是,我的手机将进入AirPlane模式,它也会切换回来。但这个过程我无法停止。我通过调用相同的方法(toggleAirplaneMode)两次来处理OnClick Listener的方式有问题吗?

问候,

此答案包含执行此操作所需的代码。还要确保您具有WRITE_SETTINGS权限。

改编自控制飞机模式:

// read the airplane mode setting
boolean isEnabled = Settings.System.getInt(
      getContentResolver(), 
      Settings.System.AIRPLANE_MODE_ON, 0) == 1;
// toggle airplane mode
Settings.System.putInt(
      getContentResolver(),
      Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 : 1);
// Post an intent to reload
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", !isEnabled);
sendBroadcast(intent);

onClick方法替换为:

                public void onClick(View v) {
                        // check current state first
                        boolean state = isAirplaneMode();
                        // toggle the state
                        final Handler handler = new Handler(){
                            @Override
                            public void handleMessage(Message msg) {
                                toggleAirplaneMode(!state);
                                super.handleMessage(msg);
                            }       
                        };
                        Thread th = new Thread() {
                           @Override
                           public void run() {
                              toggleAirplaneMode(!state);
                              handler.sendEmptyMessage(0);
                           };
                        };
                        th.start();
                }

每次你点击按钮,它都会切换飞行模式。如果不起作用,请尝试删除!

看看这个。。。这可能会有所帮助。。

公共类MainActivity扩展Activity{语境;

private void changeRadioComponentEnabled(Context paramContext, String paramString, boolean paramBoolean1, boolean paramBoolean2)
  {
    boolean bool = false;
    ContentResolver localContentResolver = paramContext.getContentResolver();
    int i;
    if (!paramBoolean1)
      i = 1;
    else
      i = 0;
    Settings.System.putInt(localContentResolver, "airplane_mode_on", i);
    Settings.System.putString(paramContext.getContentResolver(), "airplane_mode_radios", paramString);
    Intent localIntent = new Intent("android.intent.action.AIRPLANE_MODE");
    if (!paramBoolean1)
      bool = true;
    localIntent.putExtra("state", bool);
    paramContext.sendBroadcast(localIntent);
    if (!paramBoolean2)
    {
      if (paramString.indexOf("cell") == 0)
        Settings.System.putString(paramContext.getContentResolver(), "airplane_mode_radios", "cell");
    }
    else
      Settings.System.putString(paramContext.getContentResolver(), "airplane_mode_radios", "cell,bluetooth,wifi,nfc");
  }


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.context = this;
    ((Button)findViewById(R.id.button1)).setOnClickListener(new View.OnClickListener()
    {
      public void onClick(View paramAnonymousView)
      {
        MainActivity.this.changeRadioComponentEnabled(MainActivity.this.context, "cell", false, false);
      }
    });
    ((Button)findViewById(R.id.button2)).setOnClickListener(new View.OnClickListener()
    {
      public void onClick(View paramAnonymousView)
      {
          MainActivity.this.changeRadioComponentEnabled(MainActivity.this.context, "cell", true, false);
      }
    });

}

我终于拿到了

我在我的代码中使用了这个

            public void onClick(View v) {
                // check current state first
                boolean state = isAirplaneMode();
                // toggle the state
                toggleAirplaneMode(state);
               state = isAirplaneMode();
                // toggle the state
                toggleAirplaneMode(state);
                ser = new ServiceState();
                ser.setState(STATE_IN_SERVICE);
               }

并且我已经声明了final int STATE_IN_SERVICE=0;在OnCreate之前。ser是ServiceState的实例。

谢谢你的回复。

相关内容

  • 没有找到相关文章

最新更新