模拟点击在 Android 上有2种情况:
1,只模拟点击自己的页面;
2,只要自己进程活着,不管是哪个应用在前台,都可以模拟点击;

第一种情况比较简单:
  long downTime = SystemClock.uptimeMillis();  float x = 200;  float y = getResources().getDisplayMetrics().heightPixels - 200;  final MotionEvent downEvent = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_DOWN, x, y, 0);  final MotionEvent upEvent = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_UP, x, y, 0);  View view = findViewById(R.id.root);  view.dispatchTouchEvent(downEvent);  view.dispatchTouchEvent(upEvent);  downEvent.recycle();  upEvent.recycle();

有人可能发现了,这第一种模拟点击自己的页面,貌似没什么意义,因为既然是自己的页面,代码都是我们自己写,可以直接走点击的方法,不需要这么麻烦。不过还是有些特殊场景可能需要的,比如模拟点击广告。

第二种情况:

1,之前写过一篇《牛逼的AccessibilityService》

2,如果是 root 手机或者是系统应用, 可以添加权限:

<uses-permission android:name="android.permission.INJECT_EVENTS"/>  

则可以使用:

 AsyncTask.execute(new Runnable() {     @Override     public void run() {         // 必须在 子线程         Instrumentation mInst = new Instrumentation();         mInst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0));         mInst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0));     } });

sendPointerSync 实际利用的是 InputManager 的 injectInputEvent 方法;

更多相关文章

  1. Android下模拟按键输入
  2. Android(安卓)获取存储卡路径和空间使用情况
  3. Android(安卓)无法查看外部依赖jar的源码的问题
  4. android开发 列表显示(ListView)
  5. ListItem更改背景色
  6. android 命令(adb shell)进入指定模拟器或设备
  7. android studio的问题整理(如何删除模块(Module))
  8. android studio调试c++代码
  9. android Button组件的属性和方法

随机推荐

  1. Android ListView实现任意layout
  2. Android之渐变动画
  3. android 网络读取图片 带进度条
  4. 转:Android 获取Root权限
  5. Android Studio 添加百分比布局库的依赖
  6. Android(安卓)SQLite学习指南
  7. Android 贪吃蛇游戏带电脑
  8. Android实现程序之间的跳转
  9. Android(安卓)NDK在Mac OS 上面编译FFmpe
  10. 一个Android下拉刷新样式