1

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

  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);
        }

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

4

1 回答 1

2

为什么不尝试禁用它:

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();
    }


}
于 2015-11-10T13:09:40.143 回答