跨进程屏幕点击:可以用

sendevent /dev/input/eventX 实现,前提手机已经root。

遇到的坑:

1:adb shell可以,但是code不行,有可能是因为eventX文件没有读写权限,请chmod 777 eventX。

2:执行adb没有权限,adb shell setenforce 0.

相关代码;

private void exceutecmd(String x,String y){
    String envets = "sendevent /dev/input/event6 ";
    String IDValue ="112";
    String TouchaMajorValue ="4";
    String PressValue[] ={"10","40","20","0"};
    //不同手机如下值配置不同,getevent查看
    String EnvAbs="X ",AbsID="XX ",AbsX ="XX ",AbsY="XX ",AbsTouchMajor="XX ",AbsPress ="XX ";

    String sync =envets+"0 0 0";
    {
        exceutecmd(envets + EnvAbs + AbsID + IDValue);
        exceutecmd(envets + EnvAbs + AbsX + x);
        exceutecmd(envets + EnvAbs + AbsY + y);
        exceutecmd(envets + EnvAbs + AbsTouchMajor + TouchaMajorValue);
        for (int i = 0; i < PressValue.length; i++) {
            exceutecmd(envets + EnvAbs + AbsPress + PressValue[i]);
            exceutecmd(sync);
        }
        exceutecmd(envets + EnvAbs + AbsID + "-1");
        exceutecmd(sync);
    }
}
private void exceutecmd(String cmd){
    try{
        Runtime.getRuntime().exec(cmd);
        Thread.sleep(10);
    }catch(Exception e){ }
}
public void DisplayMyview(){
    LayoutInflater inflator = (LayoutInflater)
            this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflator.inflate(R.layout.layout_toast, null);
    if (FloatWindow.get() == null)
    FloatWindow.setView(view)//网上写好的悬浮框简写。
          
    Button button =view.findViewById(R.id.button1);
    Button button2 =view.findViewById(R.id.button2);
    Button button3 =view.findViewById(R.id.button3);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            init();
            start();
        }
    });
    button2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            stop();
        }
    });
    button3.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            stop();
            finish();
            FloatWindow.get().hide();
        }
    });
}

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐