1

实际上在我的项目中,我想自动更改飞行模式和自动旋转设置,并且我尝试了 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 中定义并调用了这个函数(还有自动旋转)

4

2 回答 2

3

您需要发送广播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>
于 2012-06-28T15:41:14.557 回答
0

您是否在您的 prj 清单文件中添加了以下权限。

  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
  <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
于 2012-06-28T15:43:01.500 回答