一、设置飞行模式代码
ContentResolver cr = getContentResolver();
if(Settings.System.getString(cr,Settings.System.AIRPLANE_MODE_ON).equals("0")){//获取当前飞行模式状态,返回的是String值0,或1.0为关闭飞行,1为开启飞行//如果关闭飞行,则打开飞行Settings.System.putString(cr,Settings.System.AIRPLANE_MODE_ON, "1");Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);sendBroadcast(intent);}else{//否则关闭飞行Settings.System.putString(cr,Settings.System.AIRPLANE_MODE_ON, "0");Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);sendBroadcast(intent);}
二、增加权限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
三、运行验证
运行后,APP出现crash,报错如下,为权限原因:
Permission Denial: not allowed to send broadcast android.intent.action.AIRPLAE
通过查找资料,得知在android 4.4版本之前可以使用该方法设置飞行模式,之后的安卓版本需要将在将权限编译到安卓系统里才可以生效。
四、使用SHELL命令设置
public static String AirplaneModePref1 = "settings put global airplane_mode_on ";
public static String AirplaneModePref2 = "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state ";public void setAirPlane(int airPlaneMode){String cmdPref1 = AirplaneModePref1+airPlaneMode;//打开飞行模式if(airPlaneMode == 1){String cmdPref2 = AirplaneModePref2+"true";CmdUtils.execShell(cmdPref1);CmdUtils.execShell(cmdPref2);}else{//关闭飞行模式String cmdPref2 = AirplaneModePref2+"false";CmdUtils.execShell(cmdPref1);CmdUtils.execShell(cmdPref2);}
}
通过验证这种方法有效。