画面がオンになったときに機内モードをオンまたはオフにする(ユーザーの選択に応じて)コードを書いています。ユーザーが選択できるフラグを保持しています(オフの場合は0、オンの場合は1)。ただし、何らかの理由で、ユーザーが何を選択しても、アクティビティ(airplanei)の値は常に1になります。エラーは私が投稿したコードのどこかにあると確信しています。SharedPreferencesの誤った使用が最も可能性が高いです。
アクティビティのコード:-
protected void airplane(int i) {
// Store flag in SharedPreferences
SharedPreferences flags = this.getSharedPreferences("toggleflags",
MODE_WORLD_READABLE);
SharedPreferences.Editor editor = flags.edit();
if (i == 0)
editor.putInt("airplanei", 0);
else if (i == 1)
flags.edit().putInt("airplanei", 1);
else if (i == -1)
flags.edit().putInt("airplanei", -1);
editor.commit();
}
放送受信機のコード:-
public class Screen_On extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
SharedPreferences flag = context.getSharedPreferences("toggleflags", 0);
int i = flag.getInt("airplanei", 1);
if (i == 0) {
//Code to turn airplane mode off
} else if (i == 1) {
//Code to turn airplane mode on
}
}
}
御時間ありがとうございます。