機内モードのオンとオフを切り替えることができるボタンを備えたアプリを作成しました。機内モードをオンにすると正常に動作します。しかし不思議なことに、機内モードはオフに切り替えられてもオンのままになっているようです。
オフにした後で電話の設定を確認すると、機内モードがオフになっていることがわかります。ただし、機内モードのアイコンは引き続き電話のトップバーに表示され、電話の電源ボタンを押し続けると、機内モードがまだオンになっていることが示されます。
まだオンになっているときに設定がオフとして表示される理由がわかりませんか?
これが私がそれをオフにするために使用しているコードです-私はデバッグしました、そしてそれは間違いなくこれに当たっています。mContextは、コンテキストを保持するために使用している変数です。これは設定クラスに渡され、機内モードをオフまたはオンにするためのメソッドがあります。
System.putInt(mContext.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON, 0);
this.airplaneOn = false;
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", 0);
mContext.sendBroadcast(intent);
機内モードのステータスを確認するために使用しているコードは次のとおりです-
public boolean isAirplaneOn() {
int airplaneMode = 0;
try {
airplaneMode = System.getInt(mContext.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (airplaneMode == 1) {
this.airplaneOn = true;
} else {
this.airplaneOn = false;
}
return airplaneOn;
}
どちらの場合も、this.airplaneOnは、機内モードのステータスを格納するプライベートブール値です。
私はここで愚かなことをしているのでしょうか、それともこの設定をチェックするのはどういうわけか信頼できないのでしょうか?