1

プログラムで機内モードを有効/無効にしようとしていますが、次のコードが機能しません。実行中にアプリが予期せず停止し、強制終了する必要があります

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_airplanemode);

機内モードのステータスを確認するコード 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);
        TextView a = new TextView(this);
        a.setText("AIRPLANE MODE : "+isEnabled);
        setContentView(a);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_airplanemode, menu);
    return true;
}
4

2 に答える 2

3

次のことを行う必要があります。以下を Manifesf ファイルに追加します。

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

onResume() で次のコード行を使用します。

Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 1);
newIntent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
newIntent.putExtra("state", true);
sendBroadcast(newIntent);

これは機能するはずです。context.sendBroadcast() を追加する必要はありません。

于 2012-10-03T06:53:53.720 に答える
0

必要な権限を Androidmanifest.xml ファイルに追加してみてください 追加してみてください

android.permission.WRITE_SETTINGS
于 2012-10-03T06:48:37.970 に答える