30

Android 4.2 でフライト モードを無効または有効にする方法はありますか?

以前の Android バージョンでのみ機能する次のコードを使用します。

android.provider.Settings.System.putInt(
    c.getContentResolver(),   
    android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
4

4 に答える 4

24

これは、ファームウェア署名キーによって署名されたアプリ、またはシステムパーティションにインストールされたアプリ(通常はroot化されたデバイスユーザー)を除いて、もはや不可能です。

于 2012-12-07T16:20:43.193 に答える
16

Official Android 4.2 API Documentationに書かれているように、できません

によって定義された一部のデバイス設定Settings.Systemが読み取り専用になりました。Settings.Systemに移動した で定義された設定にアプリが変更を書き込もうとすると Settings.Global、Android 4.2 以降で実行している場合、書き込み操作は警告なしで失敗します。android:targetSdkVersionand の値が 17 未満であっても、アプリはAndroid 4.2 以降での実行時にandroid:minSdkVersion移行された設定を変更できません。Settings.Global

ただし、OS 開発者の場合は、これらのアクセス許可を設定すると、それを書き込むことができます。

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

それから、書くことと読むこと、

// To Write
Settings.Global.putString(getContentResolver(), "airplane_mode_on", "1");

// To Read
String result = Settings.Global.getString(getContentResolver(), Settings.Global.AIRPLANE_MODE_ON);
Toast.makeText(this, "result:"+result, Toast.LENGTH_SHORT).show();
于 2012-12-07T18:05:22.703 に答える
-1

KitKat の場合android:sharedUserId="android.uid.system"、マニフェスト ファイルに追加する必要があります。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.airplanesetting"
    android:versionCode="1"
    android:versionName="1.0"
    android:sharedUserId="android.uid.system" >
于 2014-06-04T04:33:09.160 に答える