跨进程屏幕点击:可以用
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();}});}