我使用这段代码打开和关闭Android 4.1.2设备的飞行模式:
boolean isEnabled = Settings.System.getInt(
getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) == 1;
Settings.System.putInt(
getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0 : 1);
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", !isEnabled);
sendBroadcast(intent);
代码运行正常,但为了完全理解它的工作原理,我有一些问题。
如果我发表评论,为什么此代码不起作用:
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra(“state”,!isEnabled); sendBroadcast(意图);
在设置中进行任何更改后,是否必须始终播放意图?
有人可以详细解释一下吗?
答案 0 :(得分:1)
Settings.System.putInt()
实际上更改了int
值,但系统没有通知它。它不会在循环中读取此设置...
因此,为了使系统了解该更改,您发送系统侦听的广播,然后解析其内容,注意设置更改并相应地执行操作。
因此,您无法在不发送广播的情况下使用此代码,因为这样可以通知系统您刚才所做的更改。是的,你必须使用该广播来注意它。