实际上在我的项目中我想自动更改飞行模式和自动旋转设置,而且我在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中定义并调用了此函数(并自动旋转)
答案 0 :(得分: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>
答案 1 :(得分:0)
您在prj清单文件中添加了以下权限。
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>