实际上,在我的项目中,我想自动更改飞行模式和自动旋转设置,并且我也尝试了stakcoverflow中的许多链接以及许多其他站点

我使用了那个,但是执行过程中什么也没发生。

对于飞行模式

public void actFlight(int val)
{
    switch(val)
    {
        case 0:
            Log.v("Mani", "Flight 0");
            Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 1);
            break;

        case 1:
            Log.v("Mani", "Flight 1");
            Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
            break;

        case 2:
            Log.v("Mani", "Flight 2");
            boolean isEnabled = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;
            // toggle airplane mode
            Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 : 1);
            break;
    }
}


val是0、1或2

0表示开启飞行模式
1用于关闭飞行模式
2用于切换飞行模式切换

我过去曾按上述方式更改自动旋转设置,但效果很好,但是我无法切换飞行模式,

而且我还多次与其他示例进行了比较
没有显示错误,也没有设置更改...我该怎么办..

注意:我在SERVICE中定义并调用了此函数(以及自动旋转)

最佳答案

您需要使用Intent.ACTION_AIRPLANE_MODE_CHANGED发送广播,将代码更改为:

boolean isEnabled = Settings.System.getInt(
                paramContext.getContentResolver(),
                  Settings.System.AIRPLANE_MODE_ON, 0) == 1;
        if(isEnabled==true)
        {
            Settings.System.putInt(
                    paramContext.getContentResolver(),
                  Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 : 1);

            // Post an intent to reload
            Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
            intent.putExtra("state", !isEnabled);
            paramContext.sendBroadcast(intent);
        }
        else
        {
            Settings.System.putInt(
                    paramContext.getContentResolver(),
                  Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 : 1);

            // Post an intent to reload
            Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
            intent.putExtra("state", !isEnabled);
            paramContext.sendBroadcast(intent);
        }


注意 ::-
确保您在manifest.xml中具有这些权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
</manifest>

关于android - 飞行模式的Settings.system.putInt()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11247941/

10-10 16:15