Android 如何知道广播接收机中的飞行模式是打开还是关闭?
我在这个解决方案的其他问题中看到了多个答案,以了解飞机模式是否改变:Android 如何知道广播接收机中的飞行模式是打开还是关闭?,android,android-intent,broadcastreceiver,android-broadcast,Android,Android Intent,Broadcastreceiver,Android Broadcast,我在这个解决方案的其他问题中看到了多个答案,以了解飞机模式是否改变: IntentFilter intentFilter = new IntentFilter("android.intent.action.AIRPLANE_MODE_CHANGED"); BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context,
IntentFilter intentFilter = new
IntentFilter("android.intent.action.AIRPLANE_MODE_CHANGED");
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("AirplaneMode", "Service state changed");
}
};
context.registerReceiver(receiver, intentFilter);
但现在我想知道飞机模式是在onReceive方法上打开还是关闭的
谢谢。试试这个
IntentFilter intentFilter = new
IntentFilter("android.intent.action.AIRPLANE_MODE_CHANGED");
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("AirplaneMode", "Service state changed");
boolean isAirplaneMode = isAirplaneModeOn(context);
}
};
context.registerReceiver(receiver, intentFilter);
private static boolean isAirplaneModeOn(Context context) {
return Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
}
注
在Jelly Bean 4.2中,此设置已移动到设置。全局尝试此代码
@Override
public void onReceive(Context context, Intent intent) {
boolean isAirplaneModeOn = intent.getBooleanExtra("state", false);
if(isAirplaneModeOn){
// AP mode is on
} else {
// AP mode is off
}
}
如中所述,您可以通过以下方式检查飞机模式状态:
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public static boolean isAirplaneModeOn(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
return Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
} else {
return Settings.Global.getInt(context.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
}
}
我试过了,但对我不起作用。无论如何谢谢你!更喜欢在Intent类中使用常量。从安卓10开始,它是公共静态最终字符串动作\u飞行\u模式\u更改=“安卓.意图.动作.飞行\u模式”代码>
IntentFilter intentFilter = new
IntentFilter("android.intent.action.AIRPLANE_MODE_CHANGED");
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("AirplaneMode", "Service state changed");
boolean airplane_active = isAirplaneModeOn(context);
}
};
context.registerReceiver(receiver, intentFilter);