一、设置飞行模式代码
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);
}
}
通过验证这种方法有效。