手机群控系统(补充篇)

之前赶出来的群控顺利交付之后,发现一个致命的问题,这个文章记录就记录一些问题和解决方案

 

2019.12.19  发现手机重启之后 开发者模式会自己关闭,找不到原因,应该是ROM的原因

方案1:修改系统源码,编译,刷入ROM

方案2:开发一个APP监听开机广播,进行打开开发者模式 

后面因为时间和难度的原因,选择了方案2

// 执行Linux指令工具类

import java.io.*;

public class ShellUtils {

    public static boolean shellExec(String cmd){

        Process sh = null;

        DataOutputStream os = null;
        try{

            sh = Runtime.getRuntime().exec("su");

            os = new DataOutputStream(sh.getOutputStream());

            BufferedReader mReader = new BufferedReader(new InputStreamReader(sh.getInputStream()));

            os.writeBytes(cmd);

            os.flush();

            os.close();

            return true;

        }catch (Exception e){

            e.printStackTrace();
        }

        return false;
    }

}

工具类写好之后,创建一个广播

 

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;
import android.util.Log;

public class BootBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        // 接收到广播后 停1秒后开始操作
        SystemClock.sleep(1000);
        // 滑动解锁
        shell("input swipe 12 791 12 291");
        // 回到桌面
        shell("input keyevent 3");
        // 打开开发者页面
        shell("am start -n com.android.settings/com.android.settings.DevelpmentSettingsActivity2");
        // 点击打开开发者
        shell("input tap 394 638");
        // 点击确定
        shell("input tap 84 567");
        // 开启atx
        // 这里这个atx 如果没用到的情况下 可以不添加,这个是 uiautomator2 使用到的东西
        // shell("/data/local/tmp/atx-agent server -d");

    }

    private void shell(String cmd){
        // 执行指令
        ZipUtils.shellExec2(cmd);
        // 指令间隔一秒
        SystemClock.sleep(1000);
    }
}

最后别忘了在 AndroidManifest.xml 加入权限 和 注册广播

权限


注册广播

     
     
     
     
     

 

 

 

 

 

你可能感兴趣的:(Android)