当我切换到飞行模式时,如何立即禁用我的完成按钮?
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();
}
}
我的应用程序中有一个完成按钮,我想在切换到飞行模式时将其禁用。我的应用程序中有相同的工作代码。但是,一旦我将我的应用程序切换到飞行模式,它就不会禁用。只有当我切换到其他视图然后 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();
}
}