Android 4.2でフライトモードを無効または有効にする方法はありますか?
以前のAndroidバージョンでのみ動作するこのコードを使用します:
Android.provider.Settings.System.putInt(
c.getContentResolver(),
Android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
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 から取得した情報
免責事項:この情報は、いかなる形態の保証もなしに「現状のまま」提供されます。
これは、ファームウェア署名キーによって署名されたアプリ、またはシステムパーティションにインストールされたアプリ(通常、ルート化されたデバイスユーザーによって)を除いて、もはや不可能です。
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();
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" >