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

Posted Mark_YPQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 代码控制飞行模式开关 支持4.2以上 root相关的知识,希望对你有一定的参考价值。

支持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();
        
    

以上是关于android 代码控制飞行模式开关 支持4.2以上 root的主要内容,如果未能解决你的问题,请参考以下文章

android 4.2 系统以后的飞行模式

apm飞控飞行模式详解

如何在 Android 上检测飞行模式?

如何在 Android 上检测飞行模式?

Android通知栏增加快捷开关的技术实现

如何配置定时任务