Android 飞行模式的Settings.system.putInt()不工作
实际上,在我的项目中,我想自动更改飞行模式和自动旋转设置,而且我还尝试了stakcoverflow和许多其他网站中的许多链接 我在使用它,但在执行过程中什么也没发生 飞行模式Android 飞行模式的Settings.system.putInt()不工作,android,Android,实际上,在我的项目中,我想自动更改飞行模式和自动旋转设置,而且我还尝试了stakcoverflow和许多其他网站中的许多链接 我在使用它,但在执行过程中什么也没发生 飞行模式 public void actFlight(int val) { switch(val) { case 0: Log.v("Mani", "Flight 0"); Settings.System.putInt(context.getConten
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用于切换飞机模式切换
我曾经像上面那样更改自动旋转设置,它工作得很好,但我不能切换飞机模式
我还多次与其他一些例子进行比较
没有显示错误,设置也没有更改。。。我能做什么
注意:我在服务中定义并调用了此函数(也定义了自动旋转)您需要发送带有
意图的广播。操作\u飞机\u模式\u已更改
将代码更改为:
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>
在您的prj清单文件中添加以下权限
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
谢谢@imran khan,“发布意图”帮助了我,现在它的工作非常完美..../发布重新加载意图意图意图=新意图(意图、行动、飞机、模式改变);intent.putExtra(“状态”!isEnabled);paramContext.sendBroadcast(意图);另一个问题是我无法通过设置打开/关闭GPS。安全。。。。。。我还插入了无用的…,你能帮帮我吗…@Thamizhan:当然,我会帮你做一件事,在/OF上发布一个关于GPS的新问题,因为这个问题是关于飞行模式的。但是我搜索了这个,他们说。。。。。写入安全设置权限不适用于不属于固件的应用程序,因为安全设置旨在防止第三方应用程序修改。“这是真的吗…,那么我如何才能做到这一点…@Thamizhan:如果这个答案真的能帮助你解决你的问题,那就把它标记为答案。”。我在等你问另一个关于GPS开/关的问题。谢谢朋友:)你可以为GPS开/关私有void turnGPSOn()试试这段代码{try{String provider=Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);如果(!provider.contains(“GPS”){final Intent poke=new Intent();poke.setClassName(“com.android.Settings”,“com.android.settings.widget.SettingsAppWidgetProvider”);poke.addCategory(Intent.CATEGORY_可选);poke.setData(Uri.parse(“3”);//设置3用于gps,设置3用于Bluthoth sendBroadcast(poke);}}catch(异常e){}是的,我已经将这两个权限放在清单中了,但是每当我运行代码时..就会出现Logcat错误,原因是:java.lang.SecurityException:权限拒绝:写入安全设置需要android.Permission.WRITE\u secure\u设置