在Android 6.0上切换飞行模式

时间:2019-05-03 13:26:19

标签: java android

我目前正在尝试使用Android 6.0版以编程方式切换飞行模式。

我已经做了大量研究,有人说从4.2版开始就不可能了,而另一些人说仍然有一些变通办法,我已经尝试过了,但对我却不起作用。

我上次尝试的操作如下:

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;
        }
    }
    public static void setSettings(Context context, int value) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
            Settings.System.putInt(
                    context.getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, value);
        } else {
            Settings.Global.putInt(
                    context.getContentResolver(),
                    Settings.Global.AIRPLANE_MODE_ON, value);
        }
    }

但是这里出现错误Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS,我知道我可以在模拟器上更改这些设置,但是也可以在外部设备上更改这些设置吗?在另一个话题中,有人说对于某些设备是可行的,但我无法弄清楚有关我的设备(HUAWEI P8 Light)的任何特定信息。所以我的问题是,有可能这样做,还是有更好的方法呢?我也阅读了一些有关使用ADB切换飞行模式的信息,但是他们说这将需要相同的权限。我希望有人能帮助我。 :)

1 个答案:

答案 0 :(得分:0)

此功能不再适用于非系统应用程序,因为Google在API级别上拒绝了此操作。在有根电话上可以通过

启用/禁用数据连接