android - 如何知道 BroadcastReceiver 中的飞行模式是打开还是关闭?

标签 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, Intent intent) {
            Log.d("AirplaneMode", "Service state changed");
      }
};

context.registerReceiver(receiver, intentFilter);

但现在我想知道 onReceive 方法中的飞行模式是否打开或关闭。

谢谢。

最佳答案

this answer 中所述,您可以通过以下方式检查飞行模式状态:

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

如果返回的结果为true,则飞行模式为ON,反之亦然,因此您的完整答案为:

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

关于android - 如何知道 BroadcastReceiver 中的飞行模式是打开还是关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37135913/

相关文章:

android - 使用我在 Android 上的应用程序中的数据启动应用程序特定 Activity

java - 应用程序上的广播接收器已关闭(或在后台)

android - Android中LocationManager的高效使用

android - 在 Activity 中调用 Fragment 方法导致空指针异常

java - 将模型从一个 Activity 传递到另一个 Activity 时出错

android - eclipse中的源错误

android - 阻止移动网站打开我的应用程序 android deeplink - Google Chrome

android - ANR Intent 广播 { act=android.intent.action.TIME_TICK flg=0x50000014 (has extras) } 问题

android - Crashlytics 正在向 Fabric 报告,但 Firebase Crashlytics 中没有可用的痕迹

java - 无法在我的 Android 模拟器中创建文件夹