android 代码控制飞行模式开关 支持4.2以上 root

来源:互联网 发布:简单图案的3b编程 编辑:程序博客网 时间:2024/05/17 10:38

支持android 4.2以上系统
手机需要获取root权限 通过shell命令开关飞行模式
现在手机大都4.2以上了 代码可以选择性舍弃4.2一下的

  private final static String COMMAND_AIRPLANE_ON = "settings put global airplane_mode_on 1 \n " +            "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true\n ";    private final static String COMMAND_AIRPLANE_OFF = "settings put global airplane_mode_on 0 \n" +            " am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false\n ";    private final static String COMMAND_SU = "su";
 //判断飞行模式开关  public boolean isAirplaneModeOn()   {  //4.2以下     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)      {         return Settings.System.getInt(getContentResolver(),                  Settings.System.AIRPLANE_MODE_ON, 0) != 0;               }      else //4.24.2以上     {         return Settings.Global.getInt(getContentResolver(),                  Settings.Global.AIRPLANE_MODE_ON, 0) != 0;     }     }
  //设置飞行模式  public void setAirplaneModeOn(boolean isEnable)   {    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)      {          Settings.System.putInt(getContentResolver(),                            Settings.System.AIRPLANE_MODE_ON,isEnable ? 1:0);                 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);                            intent.putExtra("state", isEnable);                            sendBroadcast(intent);      }  else //4.2或4.2以上      {             if (enabling)                    writeCmd(COMMAND_AIRPLANE_ON);                else                    writeCmd(COMMAND_AIRPLANE_OFF);     }    }    //写入shell命令   public static void writeCmd(String command){        try{            Process su = Runtime.getRuntime().exec(COMMAND_SU);            DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());            outputStream.writeBytes(command);            outputStream.flush();            outputStream.writeBytes("exit\n");            outputStream.flush();            try {                su.waitFor();            } catch (Exception e) {                e.printStackTrace();            }            outputStream.close();        }catch(Exception e){            e.printStackTrace();        }    }
1 0
原创粉丝点击