AutoClickService.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package me.yoqi.app.lizihelper;
  2. import android.accessibilityservice.AccessibilityService;
  3. import android.text.TextUtils;
  4. import android.util.Log;
  5. import android.view.accessibility.AccessibilityEvent;
  6. import android.view.accessibility.AccessibilityNodeInfo;
  7. import android.widget.Toast;
  8. public class AutoClickService extends AccessibilityService {
  9. private static final String TAG = "GK";
  10. @Override
  11. public void onAccessibilityEvent(AccessibilityEvent event) {
  12. ztLog("===start search===");
  13. try {
  14. AccessibilityNodeInfo rootInfo = getRootInActiveWindow();
  15. if (rootInfo != null) {
  16. DFS(rootInfo);
  17. }
  18. } catch (Exception e) {
  19. ztLog("Exception:" + e.getMessage(), true);
  20. }
  21. }
  22. @Override
  23. public void onInterrupt() {
  24. }
  25. private void DFS(AccessibilityNodeInfo rootInfo) {
  26. if (rootInfo == null || TextUtils.isEmpty(rootInfo.getClassName())) {
  27. return;
  28. }
  29. if (!"android.widget.GridView".equals(rootInfo.getClassName())) {
  30. ztLog(rootInfo.getClassName().toString());
  31. for (int i = 0; i < rootInfo.getChildCount(); i++) {
  32. DFS(rootInfo.getChild(i));
  33. }
  34. } else {
  35. ztLog("==find gridView==");
  36. final AccessibilityNodeInfo GridViewInfo = rootInfo;
  37. for (int i = 0; i < GridViewInfo.getChildCount(); i++) {
  38. final AccessibilityNodeInfo frameLayoutInfo = GridViewInfo.getChild(i);
  39. final AccessibilityNodeInfo childInfo = frameLayoutInfo.getChild(0);
  40. String text = childInfo.getText().toString();
  41. if (text.equals("专栏")) {
  42. performClick(frameLayoutInfo);
  43. } else {
  44. ztLog(text);
  45. }
  46. }
  47. }
  48. }
  49. private void performClick(AccessibilityNodeInfo targetInfo) {
  50. targetInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
  51. }
  52. private void ztLog(String str) {
  53. ztLog(str, false);
  54. }
  55. private void ztLog(String str, boolean showToast) {
  56. Log.i(TAG, str);
  57. if (showToast) {
  58. Toast.makeText(this, str, Toast.LENGTH_LONG).show();
  59. }
  60. }
  61. }