当我切换到飞行模式时,如何立即禁用我的完成按钮?

How do I instantly disable my done button when I switch to airplane mode?

我的应用程序中有一个完成按钮,我想在切换到飞行模式时将其禁用。我的应用程序中有相同的工作代码。但是,一旦我将我的应用程序切换到飞行模式,它就不会禁用。只有当我切换到其他视图然后 return 到该视图时,它才会禁用。有没有一种方法可以在我的应用检测到离线模式时立即禁用它?到目前为止,这是我的代码:

  private static boolean isAirplaneModeOn(Context context) {

            return Settings.System.getInt(context.getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, 0) != 0;

        }

在我的 oncreateview 中,我有:

if(isAirplaneModeOn(Application.getAppContext())){
            Toast toast = Toast.makeText(this.getActivity(),getResources().getString(R.string.offline), Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
            mDoneBtn.setActivated(false);
            mDoneBtn.setTextColor(Color.DKGRAY);
            mDoneBtn.setOnClickListener(null);

        }else {
            mDoneBtn.setOnClickListener(this);
        }

有没有其他更好的方法?还是可以改进以实现我的目标?有任何想法吗? 谢谢!

为什么不尝试禁用它:

IntentFilter intentFilter = new IntentFilter("android.intent.action.AIRPLANE_MODE");

BroadcastReceiver receiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
       if (!isAirplaneModeOn(this)) { 
          mDoneBtn.setEnabled(false);
       } else { 
          mDoneBtn.setEnabled(true); 
       } 
  }
 };

context.registerReceiver(receiver, intentFilter);

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterRecievers();
}

private void unregisterRecievers() {
    try {
        unregisterReceiver(receiver);
    } catch (Exception e) {
        e.printStackTrace();
    }


}