web-dev-qa-db-ja.com

Android 4.2でフライトモードをプログラムで有効または無効にする方法

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

以前のAndroidバージョンでのみ動作するこのコードを使用します:

Android.provider.Settings.System.putInt(
    c.getContentResolver(),   
    Android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
25
Meroelyth

rootedデバイスには簡単な回避策があります。

機内モードを有効にするには、次のルートシェルコマンドを使用できます。

settings put global airplane_mode_on 1
am broadcast -a Android.intent.action.AIRPLANE_MODE --ez state true

機内モードを無効にするには、これらのルートシェルコマンドを使用できます。

settings put global airplane_mode_on 0
am broadcast -a Android.intent.action.AIRPLANE_MODE --ez state false

here から取得した情報

免責事項:この情報は、いかなる形態の保証もなしに「現状のまま」提供されます。

36
DavisNT

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

23
CommonsWare

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

Settings.Systemで定義された一部のデバイス設定は、読み取り専用になりました。アプリがSettings.Systemに移動したSettings.Globalで定義された設定への変更を書き込もうとすると、Android 4.2以降で実行している場合、書き込み操作は静かに失敗します。 Android:targetSdkVersionおよびAndroid:minSdkVersionの値が17未満であっても、Android 4.2以降で実行している場合、アプリは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();
13
Sruit A.Suk

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" >
0
user3705510