1

実際、私のプロジェクトでは、飛行モードと自動回転の設定を自動的に変更したいと考えています。また、stakcoverflow や他の多くのサイトで多くのリンクを試しました。

私はそれを使用していますが、実行中に何も起こりませんでした。

フライトモードの場合

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;
    }
}

値は 0、1、または 2 です

0 機内モードをオンにする 1 機内モードをオフにする 2 機内モードを切り替える

上記のように自動回転設定を変更していましたが、完全に機能していましたが、機内モードを切り替えることができませんでした。

また、他のいくつかの例と何度も比較しましたが、エラーは表示されておらず、設定も変更されていません...どうすればよいでしょうか..

注:サービスでこの関数を定義して呼び出しました(および自動回転も)

4

2 に答える 2

3

Intent.ACTION_AIRPLANE_MODE_CHANGEDコードを次のように変更してブロードキャストを送信する必要があります。

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>
于 2012-06-28T15:41:14.557 に答える
0

prj マニフェスト ファイルに以下の許可を追加してください。

  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
  <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
于 2012-06-28T15:43:01.500 に答える