全网查询,查询结果保存到csv中
This commit is contained in:
616
app/demo/search.txt
Normal file
616
app/demo/search.txt
Normal file
@@ -0,0 +1,616 @@
|
|||||||
|
--------- beginning of crash
|
||||||
|
2025-10-24 13:23:03.594 28066-28066 AndroidRuntime pid-28066 E FATAL EXCEPTION: main
|
||||||
|
Process: com.loveerror.bested, PID: 28066
|
||||||
|
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
|
||||||
|
at android.view.ViewRootImpl.setView(ViewRootImpl.java:1728)
|
||||||
|
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:472)
|
||||||
|
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:172)
|
||||||
|
at android.app.Dialog.show(Dialog.java:979)
|
||||||
|
at android.app.AlertDialog$Builder.show(AlertDialog.java:1147)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.showTextInputDialog(DragFloatingButton.kt:202)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.showPopupMenu$lambda$2(DragFloatingButton.kt:135)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.$r8$lambda$15zdVLm9enelGjlHBUkG8xSn6vM(Unknown Source:0)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton$$ExternalSyntheticLambda0.onMenuItemClick(D8$$SyntheticClass:0)
|
||||||
|
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:163)
|
||||||
|
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
|
||||||
|
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:937)
|
||||||
|
at com.android.internal.view.menu.MenuPopup.onItemClick(MenuPopup.java:146)
|
||||||
|
at android.widget.AdapterView.performItemClick(AdapterView.java:330)
|
||||||
|
at android.widget.AbsListView.performItemClick(AbsListView.java:1441)
|
||||||
|
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3527)
|
||||||
|
at android.widget.AbsListView$5.run(AbsListView.java:4672)
|
||||||
|
at android.os.Handler.handleCallback(Handler.java:966)
|
||||||
|
at android.os.Handler.dispatchMessage(Handler.java:110)
|
||||||
|
at android.os.Looper.loopOnce(Looper.java:205)
|
||||||
|
at android.os.Looper.loop(Looper.java:293)
|
||||||
|
at android.app.ActivityThread.loopProcess(ActivityThread.java:9986)
|
||||||
|
at android.app.ActivityThread.main(ActivityThread.java:9975)
|
||||||
|
at java.lang.reflect.Method.invoke(Native Method)
|
||||||
|
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
|
||||||
|
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1240)
|
||||||
|
2025-10-24 13:23:11.450 28197-28197 AndroidRuntime pid-28197 E FATAL EXCEPTION: main
|
||||||
|
Process: com.loveerror.bested, PID: 28197
|
||||||
|
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
|
||||||
|
at android.view.ViewRootImpl.setView(ViewRootImpl.java:1728)
|
||||||
|
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:472)
|
||||||
|
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:172)
|
||||||
|
at android.app.Dialog.show(Dialog.java:979)
|
||||||
|
at android.app.AlertDialog$Builder.show(AlertDialog.java:1147)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.showTextInputDialog(DragFloatingButton.kt:202)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.showPopupMenu$lambda$2(DragFloatingButton.kt:135)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.$r8$lambda$15zdVLm9enelGjlHBUkG8xSn6vM(Unknown Source:0)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton$$ExternalSyntheticLambda0.onMenuItemClick(D8$$SyntheticClass:0)
|
||||||
|
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:163)
|
||||||
|
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
|
||||||
|
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:937)
|
||||||
|
at com.android.internal.view.menu.MenuPopup.onItemClick(MenuPopup.java:146)
|
||||||
|
at android.widget.AdapterView.performItemClick(AdapterView.java:330)
|
||||||
|
at android.widget.AbsListView.performItemClick(AbsListView.java:1441)
|
||||||
|
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3527)
|
||||||
|
at android.widget.AbsListView$5.run(AbsListView.java:4672)
|
||||||
|
at android.os.Handler.handleCallback(Handler.java:966)
|
||||||
|
at android.os.Handler.dispatchMessage(Handler.java:110)
|
||||||
|
at android.os.Looper.loopOnce(Looper.java:205)
|
||||||
|
at android.os.Looper.loop(Looper.java:293)
|
||||||
|
at android.app.ActivityThread.loopProcess(ActivityThread.java:9986)
|
||||||
|
at android.app.ActivityThread.main(ActivityThread.java:9975)
|
||||||
|
at java.lang.reflect.Method.invoke(Native Method)
|
||||||
|
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
|
||||||
|
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1240)
|
||||||
|
2025-10-24 13:23:19.362 28298-28298 AndroidRuntime pid-28298 E FATAL EXCEPTION: main
|
||||||
|
Process: com.loveerror.bested, PID: 28298
|
||||||
|
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
|
||||||
|
at android.view.ViewRootImpl.setView(ViewRootImpl.java:1728)
|
||||||
|
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:472)
|
||||||
|
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:172)
|
||||||
|
at android.app.Dialog.show(Dialog.java:979)
|
||||||
|
at android.app.AlertDialog$Builder.show(AlertDialog.java:1147)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.showTextInputDialog(DragFloatingButton.kt:202)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.showPopupMenu$lambda$2(DragFloatingButton.kt:135)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton.$r8$lambda$15zdVLm9enelGjlHBUkG8xSn6vM(Unknown Source:0)
|
||||||
|
at com.loveerror.bested.button.DragFloatingButton$$ExternalSyntheticLambda0.onMenuItemClick(D8$$SyntheticClass:0)
|
||||||
|
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:163)
|
||||||
|
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
|
||||||
|
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:937)
|
||||||
|
at com.android.internal.view.menu.MenuPopup.onItemClick(MenuPopup.java:146)
|
||||||
|
at android.widget.AdapterView.performItemClick(AdapterView.java:330)
|
||||||
|
at android.widget.AbsListView.performItemClick(AbsListView.java:1441)
|
||||||
|
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3527)
|
||||||
|
at android.widget.AbsListView$5.run(AbsListView.java:4672)
|
||||||
|
at android.os.Handler.handleCallback(Handler.java:966)
|
||||||
|
at android.os.Handler.dispatchMessage(Handler.java:110)
|
||||||
|
at android.os.Looper.loopOnce(Looper.java:205)
|
||||||
|
at android.os.Looper.loop(Looper.java:293)
|
||||||
|
at android.app.ActivityThread.loopProcess(ActivityThread.java:9986)
|
||||||
|
at android.app.ActivityThread.main(ActivityThread.java:9975)
|
||||||
|
at java.lang.reflect.Method.invoke(Native Method)
|
||||||
|
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
|
||||||
|
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1240)
|
||||||
|
--------- beginning of system
|
||||||
|
2025-10-26 16:35:04.301 7627-7627 ActivityThread com.loveerror.bested I Remove activity client record, r= ActivityRecord{f460998 token=android.os.BinderProxy@736f2d2 {com.loveerror.bested/com.loveerror.bested.MainActivity}} token= android.os.BinderProxy@736f2d2
|
||||||
|
--------- beginning of main
|
||||||
|
2025-10-26 16:35:23.791 7627-7627 HwPartPowe...iceFactory com.loveerror.bested I add HwPartPowerOfficeFactoryImpl to memory.
|
||||||
|
2025-10-26 16:35:23.799 7627-7627 HwEditorHelperImpl com.loveerror.bested D isTouchPositionInHightlight.
|
||||||
|
2025-10-26 16:35:23.805 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:23.809 7627-7627 Choreographer com.loveerror.bested W Frame time is 24.041914 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:23.812 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:35:23.817 7627-7627 Choreographer com.loveerror.bested W Frame time is 32.391506 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:23.825 7627-7627 Choreographer com.loveerror.bested W Frame time is 40.62964 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:23.834 7627-7627 Choreographer com.loveerror.bested W Frame time is 48.897984 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:23.848 7627-7627 HwEditorHelperImpl com.loveerror.bested D stopLongPressingPreviewAnimation.
|
||||||
|
2025-10-26 16:35:23.848 7627-7627 HwEditorHelperImpl com.loveerror.bested D removeDrawableView.
|
||||||
|
2025-10-26 16:35:23.848 7627-7627 HwEditorHelperImpl com.loveerror.bested E removeDrawableView decorview is null.
|
||||||
|
2025-10-26 16:35:23.856 7627-7627 InputMethodManager com.loveerror.bested I getNextServedViewLocked mCurRootView is android.view.ViewRootImpl@74296fa
|
||||||
|
2025-10-26 16:35:23.856 7627-7627 InputMethodManager com.loveerror.bested I Starting input: reason=CHECK_FOCUS
|
||||||
|
2025-10-26 16:35:23.865 7627-7627 InputMethodManager com.loveerror.bested I Starting input: Bind resultString=SUCCESS_WITH_IME_SESSION
|
||||||
|
2025-10-26 16:35:23.866 7627-7627 Compatibil...geReporter com.loveerror.bested D Compat change id reported: 163400105; UID 10407; state: ENABLED
|
||||||
|
2025-10-26 16:35:23.867 7627-7627 InputMethodManager com.loveerror.bested I showSoftInput, displayId=-1,callers=android.view.inputmethod.InputMethodManager.showSoftInput:1785 android.view.inputmethod.InputMethodManager.showSoftInput:1723 android.widget.TextView.onTouchEvent:11527 android.view.View.dispatchTouchEvent:14955
|
||||||
|
2025-10-26 16:35:23.868 7627-7627 InputMethodManager com.loveerror.bested D showSoftInput() view=android.widget.EditText{cade397 VFED..CL. .F.P..ID 0,0-420,388 aid=1} flags=0 reason=SHOW_SOFT_INPUT
|
||||||
|
2025-10-26 16:35:23.879 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:35:23.879 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:35:23.928 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:23.928 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:23.930 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:23.930 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:23.936 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_IME on
|
||||||
|
2025-10-26 16:35:23.938 7627-7627 InsetsController com.loveerror.bested D ViewUI_insets show(ime(), fromIme=true)
|
||||||
|
2025-10-26 16:35:23.940 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets applyAnimation types:8,show:true, this:android.view.InsetsController@cbad74e
|
||||||
|
2025-10-26 16:35:23.940 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets controlAnimation types: 8
|
||||||
|
2025-10-26 16:35:23.940 7627-7627 InsetsController com.loveerror.bested D ViewUI_insets controlAnimation after canel existing types: 8
|
||||||
|
2025-10-26 16:35:23.948 7627-8056 SceneHelper com.loveerror.bested D notifyState ltpo1.0 push currentPackageName=com.loveerror.bested ltpo10SceneState=3009 scene=IME
|
||||||
|
2025-10-26 16:35:23.948 7627-8056 HwViewRootImpl com.loveerror.bested I Add sceneId 96 topId: 0
|
||||||
|
2025-10-26 16:35:23.963 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:23.964 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:23.966 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:23.967 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:24.015 7627-7635 oveerror.beste com.loveerror.bested I Compiler allocated 5042KB to compile void android.view.ViewRootImpl.performTraversals()
|
||||||
|
2025-10-26 16:35:24.338 7627-8056 SceneHelper com.loveerror.bested D notifyState ltpo1.0 push currentPackageName=com.loveerror.bested ltpo10SceneState=3010 scene=IME
|
||||||
|
2025-10-26 16:35:24.338 7627-8056 HwViewRootImpl com.loveerror.bested I remove sceneId 96 topId: 0
|
||||||
|
2025-10-26 16:35:26.013 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:26.026 7627-7627 Choreographer com.loveerror.bested W Frame time is 15.51419 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:26.033 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:35:26.051 7627-7627 Choreographer com.loveerror.bested W Frame time is 6.726208 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:26.067 7627-7627 Choreographer com.loveerror.bested W Frame time is 24.138264 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:26.098 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:35:26.098 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:35:26.122 7627-7627 AudioManager com.loveerror.bested V querySoundEffectsEnabled...
|
||||||
|
2025-10-26 16:35:26.122 7627-7627 AudioManager com.loveerror.bested I querySoundEffectsEnabled fail id: 0
|
||||||
|
2025-10-26 16:35:26.127 7627-7627 InputMethodManager com.loveerror.bested I setNextServedViewLocked in view is null
|
||||||
|
2025-10-26 16:35:26.128 7627-7627 InputMethodManager com.loveerror.bested I FINISH INPUT: mServedView = :android.widget.EditText{cade397 VFED..CL. .F...... 0,0-420,388 aid=1},focus=true,windowFocus=true,autofillUiShowing=false,window=android.view.ViewRootImpl$W@5303461,displayId=0,temporaryDetach=false,hasImeFocus=true
|
||||||
|
2025-10-26 16:35:26.129 7627-7627 InputMethodManager com.loveerror.bested I getServedView is android.widget.EditText{cade397 VFED..CL. .F...... 0,0-420,388 aid=1}
|
||||||
|
2025-10-26 16:35:26.129 7627-7627 InputMethodManager com.loveerror.bested I setServedViewLocked in view is null
|
||||||
|
2025-10-26 16:35:26.131 7627-7627 InputMethodManager com.loveerror.bested I set currentRootView to : null
|
||||||
|
2025-10-26 16:35:26.148 7627-7692 OpenGLRenderer com.loveerror.bested D endAllActiveAnimators on 0xb400007bf44edc00 (RippleDrawable) with handle 0xb400007c05b85e00
|
||||||
|
2025-10-26 16:35:26.163 7627-7627 InsetsSourceConsumer com.loveerror.bested I ViewUI_insets mSourceControl is null notifyControlRevoked type: 0
|
||||||
|
2025-10-26 16:35:26.168 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:26.169 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:26.171 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:26.171 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:26.189 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree Start ===
|
||||||
|
2025-10-26 16:35:26.192 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.FrameLayout [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.199 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:35:26.199 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:35:26.222 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.ImageView [text=] [desc=] [id=com.ZJMCCMCRM:id/back] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.226 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.TextView [text=全网查询] [desc=] [id=com.ZJMCCMCRM:id/title] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.228 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_left] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.230 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_right] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.231 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.webkit.WebView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.233 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.webkit.WebView [text=全网查询] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=true] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.235 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.236 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=view-frame] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.238 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.240 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.242 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.243 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.245 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.247 7627-8073 System.out com.loveerror.bested I 请输入集团名称 android.widget.EditText [text=天猫] [desc=] [id=] [hint=请输入集团名称] [clickable=true] [longClickable=false] [editable=true] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.247 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.247 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.247 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.247 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.248 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.248 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.248 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.248 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:35:26.248 7627-8073 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End ===
|
||||||
|
2025-10-26 16:35:26.254 7627-8073 System.out com.loveerror.bested I 已填写集团名称: 天猫
|
||||||
|
2025-10-26 16:35:26.258 7627-8073 System.out com.loveerror.bested I === after 已点击兄弟节点 View Tree Start ===
|
||||||
|
2025-10-26 16:35:26.261 7627-8073 System.out com.loveerror.bested I after 已点击兄弟节点 android.widget.FrameLayout [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.263 7627-8073 System.out com.loveerror.bested I android.widget.ImageView [text=] [desc=] [id=com.ZJMCCMCRM:id/back] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.266 7627-8073 System.out com.loveerror.bested I android.widget.TextView [text=全网查询] [desc=] [id=com.ZJMCCMCRM:id/title] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.268 7627-8073 System.out com.loveerror.bested I android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_left] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.271 7627-8073 System.out com.loveerror.bested I android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_right] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.273 7627-8073 System.out com.loveerror.bested I android.webkit.WebView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.283 7627-8073 System.out com.loveerror.bested I android.webkit.WebView [text=全网查询] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=true] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.311 7627-8073 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.313 7627-8073 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=view-frame] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.343 7627-8073 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.344 7627-8073 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.346 7627-8073 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.351 7627-8073 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.353 7627-8073 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.354 7627-8073 System.out com.loveerror.bested I android.widget.EditText [text=天猫] [desc=] [id=] [hint=请输入集团名称] [clickable=true] [longClickable=false] [editable=true] [focusable=true] [focus=true] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=true] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.355 7627-8073 System.out com.loveerror.bested I android.widget.Button [text=搜索] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.355 7627-8073 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=1.23452384164.123412415] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:35:26.356 7627-7627 RmeSchedManager com.loveerror.bested I init Rme, version is: v1.0
|
||||||
|
2025-10-26 16:35:26.363 7627-8073 System.out com.loveerror.bested I android.widget.TextView [text=返回主页] [desc=] [id=com.ZJMCCMCRM:id/closebtn] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:35:26.363 7627-8073 System.out com.loveerror.bested I === after 已点击兄弟节点 View Tree End ===
|
||||||
|
2025-10-26 16:35:27.972 7627-8073 System.out com.loveerror.bested I 点击搜索按钮结果: true
|
||||||
|
2025-10-26 16:35:53.124 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:53.156 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:35:53.352 7627-7627 MouseWheelSynthesizer com.loveerror.bested D mMoveStepInDp: 64, mMoveStepInPixel: 192, mUpTimeDelayed: 100
|
||||||
|
2025-10-26 16:35:53.357 7627-7627 ViewRootImpl com.loveerror.bested D ViewUI ViewRootImpl mIsInProductivePCDisplay: false
|
||||||
|
2025-10-26 16:35:53.375 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:53.375 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:53.382 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_STATUS_BAR on PopupWindow:90bfb55
|
||||||
|
2025-10-26 16:35:53.382 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl mType:0, requestedVisible:true, getLeash:null, needAnimation:false, mIsAnimationPending:false, getRootViewTitle:PopupWindow:90bfb55
|
||||||
|
2025-10-26 16:35:53.384 7627-7627 InputEventReceiver com.loveerror.bested D dispatchInputInterval 1000000
|
||||||
|
2025-10-26 16:35:53.388 7627-7627 HwSoraManager com.loveerror.bested I SORA is disabled for PopupWindow:90bfb55
|
||||||
|
2025-10-26 16:35:53.388 7627-7627 mDecorView com.loveerror.bested D invokePopup mDecorView params: width=480, height=1008
|
||||||
|
2025-10-26 16:35:53.391 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:35:53.391 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:35:53.392 7627-7627 RmeSchedManager com.loveerror.bested I init Rme, version is: v1.0
|
||||||
|
2025-10-26 16:35:53.394 7627-7627 ImeFocusController com.loveerror.bested I ViewUI imeDisplayId:0 contextDisplayId:0
|
||||||
|
2025-10-26 16:35:53.406 7627-7627 BufferQueueCore com.loveerror.bested D BufferQueueCore: mDebugHwFlow=0, mIsBufferQueueLogVSupport=0.
|
||||||
|
2025-10-26 16:35:53.407 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:53.407 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:53.413 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_STATUS_BAR on PopupWindow:90bfb55
|
||||||
|
2025-10-26 16:35:53.413 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl mType:0, requestedVisible:true, getLeash:Surface(name=Surface(name=bc96bf3 StatusBar)/@0x711d416 - animation-leash of insets_animation)/@0x19046f8, needAnimation:false, mIsAnimationPending:false, getRootViewTitle:PopupWindow:90bfb55
|
||||||
|
2025-10-26 16:35:53.418 7627-7692 OpenGLRenderer com.loveerror.bested E Unable to match the desired swap behavior.
|
||||||
|
2025-10-26 16:35:53.595 7627-7627 HwViewRootImpl com.loveerror.bested I removeInvalidNode all the node in jank list is out of time
|
||||||
|
2025-10-26 16:35:53.597 7627-7692 OpenGLRenderer com.loveerror.bested D disableOutlineDraw is true
|
||||||
|
2025-10-26 16:35:53.597 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:53.597 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:54.428 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:54.428 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:54.429 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:54.431 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:54.446 7627-7627 Choreographer com.loveerror.bested W Frame time is 0.100186996 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:54.450 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:35:54.488 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:35:54.488 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:35:54.509 7627-7627 AudioManager com.loveerror.bested V querySoundEffectsEnabled...
|
||||||
|
2025-10-26 16:35:54.509 7627-7627 AudioManager com.loveerror.bested I querySoundEffectsEnabled fail id: 0
|
||||||
|
2025-10-26 16:35:54.509 7627-7627 System.out com.loveerror.bested I Attempting to show text input dialog for: 查询公司是否注册
|
||||||
|
2025-10-26 16:35:54.522 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:35:54.522 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:35:54.527 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:35:54.528 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:35:54.545 7627-7627 DecorView[] com.loveerror.bested I pkgName:com.loveerror.bested old windowMode:0 new windoMode:1, isFixedSize:false, isStackNeedCaptionView:true
|
||||||
|
2025-10-26 16:35:54.563 7627-7627 SmartSlideOverScroller com.loveerror.bested I start init SmartSlideOverScroller and get the overscroller config
|
||||||
|
2025-10-26 16:35:54.563 7627-7627 SmartSlide...llerConfig com.loveerror.bested I get the overscroller config
|
||||||
|
2025-10-26 16:35:54.570 7627-7627 HwAdaptiveFrameManager com.loveerror.bested D transmitPackageInfo sHardVelocity=40=617
|
||||||
|
2025-10-26 16:35:54.581 7627-7627 SmartSlideOverScroller com.loveerror.bested I start init SmartSlideOverScroller and get the overscroller config
|
||||||
|
2025-10-26 16:35:54.582 7627-7627 SmartSlide...llerConfig com.loveerror.bested I get the overscroller config
|
||||||
|
2025-10-26 16:35:54.587 7627-7627 HwAdaptiveFrameManager com.loveerror.bested D transmitPackageInfo sHardVelocity=40=617
|
||||||
|
2025-10-26 16:35:54.605 7627-7627 Settings com.loveerror.bested W Setting device_provisioned has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
|
||||||
|
2025-10-26 16:35:54.605 7627-7627 Dialog com.loveerror.bested I show dialog,width:-2,height:-2
|
||||||
|
2025-10-26 16:35:54.608 7627-7627 MouseWheelSynthesizer com.loveerror.bested D mMoveStepInDp: 64, mMoveStepInPixel: 192, mUpTimeDelayed: 100
|
||||||
|
2025-10-26 16:35:54.609 7627-7627 ViewRootImpl com.loveerror.bested D ViewUI ViewRootImpl mIsInProductivePCDisplay: false
|
||||||
|
2025-10-26 16:35:54.624 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:54.624 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:54.630 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_STATUS_BAR on
|
||||||
|
2025-10-26 16:35:54.630 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl mType:0, requestedVisible:true, getLeash:null, needAnimation:false, mIsAnimationPending:false, getRootViewTitle:
|
||||||
|
2025-10-26 16:35:54.632 7627-7627 InputEventReceiver com.loveerror.bested D dispatchInputInterval 1000000
|
||||||
|
2025-10-26 16:35:54.636 7627-7627 HwSoraManager com.loveerror.bested I SORA is disabled for
|
||||||
|
2025-10-26 16:35:54.637 7627-7627 ZrHung.App...rentWindow com.loveerror.bested D TransparentWindow mHungConfigStatus = 0,mHungConfigEnable = 1
|
||||||
|
2025-10-26 16:35:54.650 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:54.650 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:54.652 7627-7627 InsetsSourceConsumer com.loveerror.bested I ViewUI_insets mSourceControl is null notifyControlRevoked type: 0
|
||||||
|
2025-10-26 16:35:54.670 7627-8265 HiTouch_HiTouchSensor com.loveerror.bested I HiTouch restricted: Sub windows restricted.
|
||||||
|
2025-10-26 16:35:54.670 7627-8265 HiTouch_Pr...reDetector com.loveerror.bested D onAttached, package=com.loveerror.bested, windowType=2038, mIsHiTouchRestricted=true
|
||||||
|
2025-10-26 16:35:54.717 7627-7627 BufferQueueCore com.loveerror.bested D BufferQueueCore: mDebugHwFlow=0, mIsBufferQueueLogVSupport=0.
|
||||||
|
2025-10-26 16:35:54.722 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_STATUS_BAR on
|
||||||
|
2025-10-26 16:35:54.722 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl mType:0, requestedVisible:true, getLeash:Surface(name=Surface(name=bc96bf3 StatusBar)/@0x711d416 - animation-leash of insets_animation)/@0x34f07da, needAnimation:false, mIsAnimationPending:false, getRootViewTitle:
|
||||||
|
2025-10-26 16:35:54.729 7627-7692 OpenGLRenderer com.loveerror.bested E Unable to match the desired swap behavior.
|
||||||
|
2025-10-26 16:35:54.770 7627-7692 OpenGLRenderer com.loveerror.bested D disableOutlineDraw is true
|
||||||
|
2025-10-26 16:35:54.822 7627-7627 ImeFocusController com.loveerror.bested I ViewUI imeDisplayId:0 contextDisplayId:0
|
||||||
|
2025-10-26 16:35:54.822 7627-7627 InputMethodManager com.loveerror.bested I set currentRootView to : android.view.ViewRootImpl@86ff871
|
||||||
|
2025-10-26 16:35:54.826 7627-7627 InputMethodManager com.loveerror.bested I Starting input: reason=WINDOW_FOCUS_GAIN
|
||||||
|
2025-10-26 16:35:54.828 7627-7627 InputMethodManager com.loveerror.bested I Starting input: Bind resultString=SUCCESS_WITH_IME_SESSION
|
||||||
|
2025-10-26 16:35:54.857 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_IME on
|
||||||
|
2025-10-26 16:35:55.580 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.580 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.581 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.581 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.582 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.582 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.583 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:55.592 7627-7627 Choreographer com.loveerror.bested W Frame time is 16.148571 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:55.594 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:35:55.599 7627-7627 Choreographer com.loveerror.bested W Frame time is 25.643759 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:55.624 7627-7627 Choreographer com.loveerror.bested W Frame time is 16.602488 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:55.633 7627-7627 Choreographer com.loveerror.bested W Frame time is 24.969028 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:55.641 7627-7627 Choreographer com.loveerror.bested W Frame time is 33.334526 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:55.656 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:35:55.656 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:35:56.661 7627-7627 HwEditorHelperImpl com.loveerror.bested D isTouchPositionInHightlight.
|
||||||
|
2025-10-26 16:35:56.667 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:35:56.694 7627-7627 Choreographer com.loveerror.bested W Frame time is 9.135331 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:35:56.721 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:35:56.724 7627-7627 HwEditorHelperImpl com.loveerror.bested D stopLongPressingPreviewAnimation.
|
||||||
|
2025-10-26 16:35:56.724 7627-7627 HwEditorHelperImpl com.loveerror.bested D removeDrawableView.
|
||||||
|
2025-10-26 16:35:56.724 7627-7627 HwEditorHelperImpl com.loveerror.bested E removeDrawableView decorview is null.
|
||||||
|
2025-10-26 16:35:56.731 7627-7627 InputMethodManager com.loveerror.bested I getNextServedViewLocked mCurRootView is android.view.ViewRootImpl@86ff871
|
||||||
|
2025-10-26 16:35:56.731 7627-7627 InputMethodManager com.loveerror.bested I Starting input: reason=CHECK_FOCUS
|
||||||
|
2025-10-26 16:35:56.739 7627-7627 InputMethodManager com.loveerror.bested I Starting input: Bind resultString=SUCCESS_WITH_IME_SESSION
|
||||||
|
2025-10-26 16:35:56.741 7627-7627 InputMethodManager com.loveerror.bested I showSoftInput, displayId=-1,callers=android.view.inputmethod.InputMethodManager.showSoftInput:1785 android.view.inputmethod.InputMethodManager.showSoftInput:1723 android.widget.TextView.onTouchEvent:11527 android.view.View.dispatchTouchEvent:14955
|
||||||
|
2025-10-26 16:35:56.741 7627-7627 InputMethodManager com.loveerror.bested D showSoftInput() view=android.widget.EditText{f56b832 VFED..CL. .F.P..ID 0,0-420,388 aid=3} flags=0 reason=SHOW_SOFT_INPUT
|
||||||
|
2025-10-26 16:35:56.751 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:35:56.751 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:35:56.776 7627-7689 OpenGLRenderer com.loveerror.bested D gpu complete is not signaled
|
||||||
|
2025-10-26 16:35:56.787 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:56.787 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:56.789 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:56.789 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:56.795 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_IME on
|
||||||
|
2025-10-26 16:35:56.796 7627-7627 InsetsController com.loveerror.bested D ViewUI_insets show(ime(), fromIme=true)
|
||||||
|
2025-10-26 16:35:56.797 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets applyAnimation types:8,show:true, this:android.view.InsetsController@6828548
|
||||||
|
2025-10-26 16:35:56.797 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets controlAnimation types: 8
|
||||||
|
2025-10-26 16:35:56.797 7627-7627 InsetsController com.loveerror.bested D ViewUI_insets controlAnimation after canel existing types: 8
|
||||||
|
2025-10-26 16:35:56.800 7627-8056 SceneHelper com.loveerror.bested D notifyState ltpo1.0 push currentPackageName=com.loveerror.bested ltpo10SceneState=3009 scene=IME
|
||||||
|
2025-10-26 16:35:56.800 7627-8056 HwViewRootImpl com.loveerror.bested I Add sceneId 96 topId: 0
|
||||||
|
2025-10-26 16:35:56.811 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:56.812 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:56.814 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:35:56.814 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:35:57.193 7627-8056 SceneHelper com.loveerror.bested D notifyState ltpo1.0 push currentPackageName=com.loveerror.bested ltpo10SceneState=3010 scene=IME
|
||||||
|
2025-10-26 16:35:57.194 7627-8056 HwViewRootImpl com.loveerror.bested I remove sceneId 96 topId: 0
|
||||||
|
2025-10-26 16:36:01.506 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:36:01.546 7627-7627 Choreographer com.loveerror.bested W Frame time is 4.911785 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:36:01.552 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:36:01.555 7627-7627 Choreographer com.loveerror.bested W Frame time is 11.886955 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:36:01.570 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:36:01.570 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:36:01.595 7627-7627 AudioManager com.loveerror.bested V querySoundEffectsEnabled...
|
||||||
|
2025-10-26 16:36:01.595 7627-7627 AudioManager com.loveerror.bested I querySoundEffectsEnabled fail id: 0
|
||||||
|
2025-10-26 16:36:01.598 7627-7627 InputMethodManager com.loveerror.bested I setNextServedViewLocked in view is null
|
||||||
|
2025-10-26 16:36:01.599 7627-7627 InputMethodManager com.loveerror.bested I FINISH INPUT: mServedView = :android.widget.EditText{f56b832 VFED..CL. .F...... 0,0-420,388 aid=3},focus=true,windowFocus=true,autofillUiShowing=false,window=android.view.ViewRootImpl$W@94a47a8,displayId=0,temporaryDetach=false,hasImeFocus=true
|
||||||
|
2025-10-26 16:36:01.599 7627-7627 InputMethodManager com.loveerror.bested I getServedView is android.widget.EditText{f56b832 VFED..CL. .F...... 0,0-420,388 aid=3}
|
||||||
|
2025-10-26 16:36:01.599 7627-7627 InputMethodManager com.loveerror.bested I setServedViewLocked in view is null
|
||||||
|
2025-10-26 16:36:01.602 7627-7627 InputMethodManager com.loveerror.bested I set currentRootView to : null
|
||||||
|
2025-10-26 16:36:01.612 7627-7692 OpenGLRenderer com.loveerror.bested D endAllActiveAnimators on 0xb400007b82467c00 (RippleDrawable) with handle 0xb400007b966af380
|
||||||
|
2025-10-26 16:36:01.628 7627-7627 InsetsSourceConsumer com.loveerror.bested I ViewUI_insets mSourceControl is null notifyControlRevoked type: 0
|
||||||
|
2025-10-26 16:36:01.632 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:01.632 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:01.637 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:01.637 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:01.657 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree Start ===
|
||||||
|
2025-10-26 16:36:01.657 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.FrameLayout [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.675 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:36:01.676 7627-7627 InputMethodManager com.loveerror.bested I mCurRootView is null
|
||||||
|
2025-10-26 16:36:01.676 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.ImageView [text=] [desc=] [id=com.ZJMCCMCRM:id/back] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.676 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.TextView [text=全网查询] [desc=] [id=com.ZJMCCMCRM:id/title] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.676 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_left] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.677 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_right] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.677 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.webkit.WebView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.678 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.webkit.WebView [text=全网查询] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=true] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.679 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.680 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=view-frame] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.680 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.681 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.682 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.682 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.683 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I 请输入集团名称 android.widget.EditText [text=天猫] [desc=] [id=] [hint=请输入集团名称] [clickable=true] [longClickable=false] [editable=true] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.684 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.685 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.685 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End [find] ===
|
||||||
|
2025-10-26 16:36:01.685 7627-8310 System.out com.loveerror.bested I === targetHint:请输入集团名称 findNodeByHint Tree End ===
|
||||||
|
2025-10-26 16:36:01.710 7627-8310 System.out com.loveerror.bested I 已填写集团名称: 天猫
|
||||||
|
2025-10-26 16:36:01.715 7627-8310 System.out com.loveerror.bested I === after 已点击兄弟节点 View Tree Start ===
|
||||||
|
2025-10-26 16:36:01.716 7627-8310 System.out com.loveerror.bested I after 已点击兄弟节点 android.widget.FrameLayout [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.717 7627-8310 System.out com.loveerror.bested I android.widget.ImageView [text=] [desc=] [id=com.ZJMCCMCRM:id/back] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.722 7627-8310 System.out com.loveerror.bested I android.widget.TextView [text=全网查询] [desc=] [id=com.ZJMCCMCRM:id/title] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.727 7627-8310 System.out com.loveerror.bested I android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_left] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.738 7627-8310 System.out com.loveerror.bested I android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_right] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.753 7627-8310 System.out com.loveerror.bested I android.webkit.WebView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.754 7627-8310 System.out com.loveerror.bested I android.webkit.WebView [text=全网查询] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=true] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.755 7627-8310 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.756 7627-8310 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=view-frame] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.756 7627-8310 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.757 7627-8310 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.757 7627-8310 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.757 7627-8310 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.758 7627-8310 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.758 7627-8310 System.out com.loveerror.bested I android.widget.EditText [text=天猫] [desc=] [id=] [hint=请输入集团名称] [clickable=true] [longClickable=false] [editable=true] [focusable=true] [focus=true] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=true] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.759 7627-8310 System.out com.loveerror.bested I android.widget.Button [text=搜索] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.759 7627-8310 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=1.23452384164.123412415] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:01.770 7627-8310 System.out com.loveerror.bested I android.widget.TextView [text=返回主页] [desc=] [id=com.ZJMCCMCRM:id/closebtn] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:01.770 7627-8310 System.out com.loveerror.bested I === after 已点击兄弟节点 View Tree End ===
|
||||||
|
2025-10-26 16:36:01.820 7627-7627 RmeSchedManager com.loveerror.bested I init Rme, version is: v1.0
|
||||||
|
2025-10-26 16:36:17.567 7627-8310 System.out com.loveerror.bested I 点击搜索按钮结果: true
|
||||||
|
2025-10-26 16:36:46.687 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:36:46.708 7627-7627 Choreographer com.loveerror.bested W Frame time is 3.600421 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:36:46.715 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:36:46.725 7627-7627 Choreographer com.loveerror.bested W Frame time is 3.242608 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:36:46.750 7627-7627 Choreographer com.loveerror.bested W Frame time is 1.568748 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:36:47.075 7627-7627 MouseWheelSynthesizer com.loveerror.bested D mMoveStepInDp: 64, mMoveStepInPixel: 192, mUpTimeDelayed: 100
|
||||||
|
2025-10-26 16:36:47.077 7627-7627 ViewRootImpl com.loveerror.bested D ViewUI ViewRootImpl mIsInProductivePCDisplay: false
|
||||||
|
2025-10-26 16:36:47.097 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:47.097 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:47.109 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_STATUS_BAR on PopupWindow:e4a803e
|
||||||
|
2025-10-26 16:36:47.109 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl mType:0, requestedVisible:true, getLeash:null, needAnimation:false, mIsAnimationPending:false, getRootViewTitle:PopupWindow:e4a803e
|
||||||
|
2025-10-26 16:36:47.111 7627-7627 InputEventReceiver com.loveerror.bested D dispatchInputInterval 1000000
|
||||||
|
2025-10-26 16:36:47.117 7627-7627 HwSoraManager com.loveerror.bested I SORA is disabled for PopupWindow:e4a803e
|
||||||
|
2025-10-26 16:36:47.117 7627-7627 mDecorView com.loveerror.bested D invokePopup mDecorView params: width=480, height=1008
|
||||||
|
2025-10-26 16:36:47.122 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:36:47.122 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:36:47.123 7627-7627 RmeSchedManager com.loveerror.bested I init Rme, version is: v1.0
|
||||||
|
2025-10-26 16:36:47.127 7627-7627 ImeFocusController com.loveerror.bested I ViewUI imeDisplayId:0 contextDisplayId:0
|
||||||
|
2025-10-26 16:36:47.148 7627-7627 BufferQueueCore com.loveerror.bested D BufferQueueCore: mDebugHwFlow=0, mIsBufferQueueLogVSupport=0.
|
||||||
|
2025-10-26 16:36:47.151 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:47.152 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:47.162 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl -> ITYPE_STATUS_BAR on PopupWindow:e4a803e
|
||||||
|
2025-10-26 16:36:47.162 7627-7627 InsetsSourceConsumer com.loveerror.bested D ViewUI_insets setControl mType:0, requestedVisible:true, getLeash:Surface(name=Surface(name=bc96bf3 StatusBar)/@0x711d416 - animation-leash of insets_animation)/@0x6245bb5, needAnimation:false, mIsAnimationPending:false, getRootViewTitle:PopupWindow:e4a803e
|
||||||
|
2025-10-26 16:36:47.171 7627-7692 OpenGLRenderer com.loveerror.bested E Unable to match the desired swap behavior.
|
||||||
|
2025-10-26 16:36:47.568 7627-7692 OpenGLRenderer com.loveerror.bested D disableOutlineDraw is true
|
||||||
|
2025-10-26 16:36:47.570 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:47.570 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:47.572 7627-7641 OpenGLRenderer com.loveerror.bested I Davey! PopupWindow:e4a803e. duration=792ms; Flags=1, FrameTimelineVsyncId=8231734, IntendedVsync=375068874453702, Vsync=375069224453688, InputEventId=0, HandleInputStart=375069230758392, AnimationStart=375069230854746, PerformTraversalsStart=375069230882350, DrawStart=375069644821413, FrameDeadline=375068891120368, FrameInterval=375069230090684, FrameStartTime=16666666, SyncQueued=375069661807350, SyncStart=375069662247454, IssueDrawCommandsStart=375069662391725, SwapBuffers=375069663663079, FrameCompleted=375069667459433, DequeueBufferDuration=17187, QueueBufferDuration=1906771, GpuCompleted=375069666209433, SwapBuffersCompleted=375069667459433, DisplayPresentTime=0, MetaDataFps=0,
|
||||||
|
2025-10-26 16:36:47.588 7627-7627 HwViewRootImpl com.loveerror.bested I removeInvalidNode jank list is null
|
||||||
|
2025-10-26 16:36:52.551 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:36:52.552 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:36:52.554 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:36:52.556 7627-7627 HwDragEnhancementImpl com.loveerror.bested D handleTimerDrag: false
|
||||||
|
2025-10-26 16:36:52.562 7627-7627 Choreographer com.loveerror.bested W Frame time is 9.037928 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
|
||||||
|
2025-10-26 16:36:52.568 7627-7627 HwDragEnhancementImpl com.loveerror.bested D Start long press for hw drag enhancement.
|
||||||
|
2025-10-26 16:36:52.613 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset.
|
||||||
|
2025-10-26 16:36:52.613 7627-7627 WebViewDragEnhancement com.loveerror.bested D dragReset cacheSize = 0
|
||||||
|
2025-10-26 16:36:52.630 7627-7627 HwViewRootImpl com.loveerror.bested I removeInvalidNode all the node in jank list is out of time
|
||||||
|
2025-10-26 16:36:52.641 7627-7627 AudioManager com.loveerror.bested V querySoundEffectsEnabled...
|
||||||
|
2025-10-26 16:36:52.641 7627-7627 AudioManager com.loveerror.bested I querySoundEffectsEnabled fail id: 0
|
||||||
|
2025-10-26 16:36:52.672 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:52.672 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:52.677 7627-7627 InsetsSourceConsumer com.loveerror.bested I ViewUI_insets mSourceControl is null notifyControlRevoked type: 0
|
||||||
|
2025-10-26 16:36:52.713 7627-7627 System.out com.loveerror.bested I === View Tree Start ===
|
||||||
|
2025-10-26 16:36:52.715 7627-7627 System.out com.loveerror.bested I android.widget.FrameLayout [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.817 7627-7627 System.out com.loveerror.bested I android.widget.ImageView [text=] [desc=] [id=com.ZJMCCMCRM:id/back] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.818 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=全网查询] [desc=] [id=com.ZJMCCMCRM:id/title] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.820 7627-7627 System.out com.loveerror.bested I android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_left] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.822 7627-7627 System.out com.loveerror.bested I android.widget.LinearLayout [text=] [desc=] [id=com.ZJMCCMCRM:id/close_right] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.824 7627-7627 System.out com.loveerror.bested I android.webkit.WebView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.826 7627-7627 System.out com.loveerror.bested I android.webkit.WebView [text=全网查询] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=true] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.828 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.830 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=view-frame] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.832 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.834 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.836 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.838 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.840 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.842 7627-7627 System.out com.loveerror.bested I android.widget.EditText [text=天猫] [desc=] [id=] [hint=请输入集团名称] [clickable=true] [longClickable=false] [editable=true] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.844 7627-7627 System.out com.loveerror.bested I android.widget.Button [text=搜索] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=true] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=true] [enabled=true] [focusable=true] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.846 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.848 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江天猫技术有限公司(57171447535)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.850 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.852 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.855 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省杭州市余杭区文一西路969号] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.857 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=A1] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.859 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.861 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:张慈] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.863 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.865 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=永康市天猫玻璃制品厂(57179481821)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.867 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.872 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.878 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@金华市@永康市@永康城区@总部中心金山大厦3楼] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.884 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=C1] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.889 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=离网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.894 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:FW陈有双(铁通)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.895 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.901 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江天猫网络有限公司(57171447534)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.907 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.911 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.916 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@杭州市@余杭区@闲林镇五常开发区@五常大道168号3幢5层506室] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.921 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=C1] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.926 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.931 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:黄仕芳(铁通)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.933 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.939 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=诸暨天猫针纺有限公司(57175393059)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.947 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.953 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.960 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@绍兴市@诸暨市@大唐镇@倪村路188号] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.974 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=C1] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:52.988 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.003 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:汪玲] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.004 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.019 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江天猫校园技术服务有限公司(57171682712)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.034 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.041 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.049 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@杭州市@余杭区@闲林镇五常开发区@文一幢5层561室] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.058 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.070 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=潜在客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.080 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:王懿] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.083 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.094 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=杭州天猫优选电子商务有限公司(571711532758)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.112 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.127 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.138 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省杭州市余杭区五常街道文一西路969号3幢4层495] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.149 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.159 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.177 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:王懿] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.179 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.189 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=杭州天猫车站科技有限公司(57171659038)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.200 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.209 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.217 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省杭州市余杭区五常街道文一西路969号阿里巴巴西溪园区3号楼5F] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:53.225 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.232 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.243 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:许捷] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.246 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.259 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江天猫技术有限公司温州分公司(57177634893)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.276 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.289 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.304 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@温州市@瓯海区@郭溪街道@金州工业区3楼] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.318 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.333 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=离网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.347 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:周佳佳] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.352 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.366 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江天猫供应链管理有限公司(57171739022)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.382 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.395 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.408 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@杭州市@余杭区@闲林镇五常开发区@海创园] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.422 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.436 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.450 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:王懿] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.455 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.469 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=余姚市天猫电器有限公司(57174498257)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.485 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.498 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.509 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@宁波市@余姚市@低塘街道@郑巷村横埭] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.526 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.543 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.559 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:郑蓥] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.563 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.578 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=吴江市庙港华丰纺织厂劳天猫分部(57175478310)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.594 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.608 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.622 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@绍兴市@柯桥区@钱清镇@106县道] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.636 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.650 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=离网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.664 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:周小红] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.668 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.682 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江天猫机电科技有限公司(571751040074)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.700 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.716 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.730 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省绍兴市诸暨市次坞镇迪奥路13号] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.744 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.769 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=潜在客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.787 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:周航波] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.794 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.812 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=杭州萧山天猫数码有限公司(571751033322)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.833 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.852 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.871 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@杭州市@萧山区@城厢街道@浙江省杭州市萧山区城厢街道萧绍路1258号二层] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.893 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.917 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.946 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:周宣] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.955 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:53.979 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=绍兴微鲸贸易有限公司天猫部门(57175477320)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.005 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.028 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.047 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@绍兴市@柯桥区@杨汛桥镇@窗帘产业园] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.064 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.084 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=离网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.105 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:洪佳铭] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.113 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.135 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=杭州天猫校园技术服务有限公司(571711532880)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.160 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.186 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.216 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省杭州市余杭区五常街道爱橙街2号1幢] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.238 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.260 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.288 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:王懿] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.297 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.322 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=仙居县车品天猫店王奕佳店(57176518906)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.350 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.372 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.396 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@台州市@仙居县@官路镇@东张村溪滩街9弄25号] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.420 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.443 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.471 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.480 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.508 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=天台飞天工旗舰店(天猫)(57176521785)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.536 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.565 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.587 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@台州市@天台县@坦头镇@鱼山村] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.610 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.634 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.660 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:范晓燕] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.670 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.692 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=杭州怀瑾科技有限公司(电商--千岁好天猫旗舰店)(57176469586)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.716 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.740 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.759 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@台州市@椒江区@白云街道@中心大道227号台州移动机房大楼] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.782 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.805 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=离网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.828 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.835 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.857 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=台州市路桥天猫机电设备厂(57176570514)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.880 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.904 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.925 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省@台州市@路桥区@金清镇@文昌路港湾印象斜对面] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.946 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.970 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=在网客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:54.996 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:冯茜茜] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.005 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.032 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=藤原天猫商城(57176518465)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.067 7627-7627 System.out com.loveerror.bested I android.view.View [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.096 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.120 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=浙江省台州市温岭市泽国镇夹屿村双峰大道8(正)] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.145 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=D] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.173 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=潜在客户] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.199 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=归属客户经理:李志涵] [desc=] [id=] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.207 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=] [desc=] [id=1.23452384164.123412415] [hint=] [clickable=false] [longClickable=false] [editable=false] [focusable=false] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=true] [password=false] [multiple=false] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=false] [accessible=false] [visible=true]
|
||||||
|
2025-10-26 16:36:55.214 7627-7627 System.out com.loveerror.bested I android.widget.TextView [text=返回主页] [desc=] [id=com.ZJMCCMCRM:id/closebtn] [hint=] [clickable=true] [longClickable=false] [editable=false] [focusable=true] [focus=false] [selected=false] [checkable=false] [checked=false] [scrollable=false] [visibleToUser=false] [password=false] [multiple=true] [accessibilityFocus=false] [package=com.ZJMCCMCRM] [focused=false] [enabled=true] [focusable=true] [accessible=false] [visible=false]
|
||||||
|
2025-10-26 16:36:55.214 7627-7627 System.out com.loveerror.bested I === View Tree End ===
|
||||||
|
2025-10-26 16:36:55.216 7627-7627 Choreographer com.loveerror.bested I Skipped 152 frames! The application may be doing too much work on its main thread.
|
||||||
|
2025-10-26 16:36:55.216 7627-7627 RmeSchedManager com.loveerror.bested I init Rme, version is: v1.0
|
||||||
|
2025-10-26 16:36:55.245 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,105], mVisible=true}
|
||||||
|
2025-10-26 16:36:55.246 7627-7627 InsetsController com.loveerror.bested I ViewUI_insets updateState new source: InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,0][0,0], mVisible=false}
|
||||||
|
2025-10-26 16:36:55.279 7627-7627 HwViewRootImpl com.loveerror.bested I removeInvalidNode jank list is null
|
||||||
|
2025-10-26 16:37:55.692 7627-7627 WindowManager com.loveerror.bested I trimMemory level: 5
|
||||||
@@ -6,6 +6,7 @@ import android.content.Intent
|
|||||||
import android.view.accessibility.AccessibilityEvent
|
import android.view.accessibility.AccessibilityEvent
|
||||||
import com.loveerror.bested.handler.ZjMccmCrm
|
import com.loveerror.bested.handler.ZjMccmCrm
|
||||||
import com.loveerror.bested.tool.AccessibilityTool
|
import com.loveerror.bested.tool.AccessibilityTool
|
||||||
|
import com.loveerror.bested.tool.RootNodeCallbackImpl
|
||||||
import com.loveerror.bested.tool.WebViewTool
|
import com.loveerror.bested.tool.WebViewTool
|
||||||
|
|
||||||
class UIInspectorService : AccessibilityService() {
|
class UIInspectorService : AccessibilityService() {
|
||||||
@@ -15,8 +16,9 @@ class UIInspectorService : AccessibilityService() {
|
|||||||
override fun onServiceConnected() {
|
override fun onServiceConnected() {
|
||||||
super.onServiceConnected()
|
super.onServiceConnected()
|
||||||
|
|
||||||
|
val rootNodeCallbackImpl = RootNodeCallbackImpl(uiInspectorService = this)
|
||||||
// 初始化 ZjMccmCrm
|
// 初始化 ZjMccmCrm
|
||||||
zjMccmCrm = ZjMccmCrm(this)
|
zjMccmCrm = ZjMccmCrm(rootNodeCallbackImpl)
|
||||||
zjMccmCrm.initialize(this)
|
zjMccmCrm.initialize(this)
|
||||||
// 设置配置
|
// 设置配置
|
||||||
serviceInfo = createServiceInfo()
|
serviceInfo = createServiceInfo()
|
||||||
@@ -36,6 +38,10 @@ class UIInspectorService : AccessibilityService() {
|
|||||||
or AccessibilityEvent.TYPE_VIEW_FOCUSED
|
or AccessibilityEvent.TYPE_VIEW_FOCUSED
|
||||||
or AccessibilityEvent.TYPE_WINDOWS_CHANGED
|
or AccessibilityEvent.TYPE_WINDOWS_CHANGED
|
||||||
or AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED
|
or AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED
|
||||||
|
or AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
|
||||||
|
or AccessibilityEvent.TYPE_VIEW_SCROLLED
|
||||||
|
or AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED
|
||||||
|
or AccessibilityEvent.TYPES_ALL_MASK
|
||||||
-> {
|
-> {
|
||||||
handleWindowChangeOpt(event)
|
handleWindowChangeOpt(event)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,14 @@
|
|||||||
package com.loveerror.bested
|
package com.loveerror.bested
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.content.BroadcastReceiver
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
|
||||||
import android.content.IntentFilter
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
|
import com.loveerror.bested.button.DragFloatingButton
|
||||||
import com.loveerror.bested.button.GlobalFloatingButtonManager
|
import com.loveerror.bested.button.GlobalFloatingButtonManager
|
||||||
import com.loveerror.bested.task.TaskManager
|
|
||||||
|
|
||||||
class MyApplication : Application() {
|
class MyApplication : Application() {
|
||||||
private lateinit var buttonManager: GlobalFloatingButtonManager
|
private lateinit var buttonManager: GlobalFloatingButtonManager
|
||||||
private lateinit var broadcastReceiver: BroadcastReceiver
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
instance = this
|
instance = this
|
||||||
@@ -27,6 +23,11 @@ class MyApplication : Application() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getFloatingButton(context: Context): DragFloatingButton {
|
||||||
|
return buttonManager.getFloatingButton(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onTerminate() {
|
override fun onTerminate() {
|
||||||
super.onTerminate()
|
super.onTerminate()
|
||||||
buttonManager.cleanup() // 清理包括广播注销
|
buttonManager.cleanup() // 清理包括广播注销
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.loveerror.bested
|
package com.loveerror.bested
|
||||||
|
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
|
||||||
import android.accessibilityservice.AccessibilityService
|
|
||||||
import android.view.accessibility.AccessibilityEvent
|
import android.view.accessibility.AccessibilityEvent
|
||||||
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
|
import com.loveerror.bested.tool.RootNodeCallback
|
||||||
|
|
||||||
class SelectAccessibility(private val service: UIInspectorService) {
|
class SelectAccessibility(private val service: RootNodeCallback) {
|
||||||
|
|
||||||
|
|
||||||
fun handleSelectPopup(event: AccessibilityEvent) {
|
fun handleSelectPopup(event: AccessibilityEvent) {
|
||||||
@@ -18,7 +18,7 @@ class SelectAccessibility(private val service: UIInspectorService) {
|
|||||||
// 延迟一小段时间确保弹窗完全加载
|
// 延迟一小段时间确保弹窗完全加载
|
||||||
Thread.sleep(500)
|
Thread.sleep(500)
|
||||||
|
|
||||||
val root = service.rootInActiveWindow
|
val root = service.getRootNodeReceived()
|
||||||
if (root != null) {
|
if (root != null) {
|
||||||
// 查找所有可点击的选项
|
// 查找所有可点击的选项
|
||||||
traverseAndFindOptions(root)
|
traverseAndFindOptions(root)
|
||||||
@@ -67,7 +67,7 @@ class SelectAccessibility(private val service: UIInspectorService) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun selectOptionByText(optionText: String) {
|
fun selectOptionByText(optionText: String) {
|
||||||
val root = service.rootInActiveWindow
|
val root = service.getRootNodeReceived()
|
||||||
if (root != null) {
|
if (root != null) {
|
||||||
val optionNodes = root.findAccessibilityNodeInfosByText(optionText)
|
val optionNodes = root.findAccessibilityNodeInfosByText(optionText)
|
||||||
optionNodes.firstOrNull()?.let { node ->
|
optionNodes.firstOrNull()?.let { node ->
|
||||||
|
|||||||
@@ -2,19 +2,22 @@ package com.loveerror.bested.button
|
|||||||
|
|
||||||
enum class ActionEvent {
|
enum class ActionEvent {
|
||||||
|
|
||||||
START_ACTION("com.loveerror.bested.START_ACTION", "启动按钮"),
|
START_ACTION("com.loveerror.bested.START_ACTION", "去普通建档"),
|
||||||
FILL_ACTION("com.loveerror.bested.FILL_ACTION", "填充表单"),
|
FILL_ACTION("com.loveerror.bested.FILL_ACTION", "普通建档填充表单"),
|
||||||
SET_DATA_SOURCE("com.loveerror.bested.SET_DATA_SOURCE", "设置数据源"),
|
SET_DATA_SOURCE("com.loveerror.bested.SET_DATA_SOURCE", "设置数据源"),
|
||||||
HIDE_FLOATING_BUTTON("com.loveerror.bested.HIDE_FLOATING_BUTTON", "隐藏悬浮按钮"),
|
HIDE_FLOATING_BUTTON("com.loveerror.bested.HIDE_FLOATING_BUTTON", "隐藏悬浮按钮"),
|
||||||
PRINT_CURRENT_PAGE("com.loveerror.bested.PRINT_CURRENT_PAGE", "打印当前界面"),
|
PRINT_CURRENT_PAGE("com.loveerror.bested.PRINT_CURRENT_PAGE", "打印当前界面"),
|
||||||
QUERY_COMPANY_REGISTER("com.loveerror.bested.QUERY_COMPANY_REGISTER", "查询公司是否注册",isDisplay = true, menuWithText = true),
|
|
||||||
UNKNOWN("com.loveerror.bested.UNKNOWN", "未知",isDisplay = false);
|
|
||||||
|
|
||||||
constructor(event: String, menuName: String, isDisplay: Boolean = true, menuWithText: Boolean= false){
|
QUERY_COMPANY_REGISTER("com.loveerror.bested.QUERY_COMPANY_REGISTER", "去全网查询",isDisplay = true),
|
||||||
|
QUERY_COMPANY_SEARCH_ACTION("com.loveerror.bested.QUERY_COMPANY_SEARCH_ACTION", "查询公司是否注册",isDisplay = true, menuWithText = listOf("companyNames")),
|
||||||
|
UNKNOWN("com.loveerror.bested.UNKNOWN", "未知",isDisplay = false, enable = false);
|
||||||
|
|
||||||
|
constructor(event: String, menuName: String, isDisplay: Boolean = true, menuWithText: List<String> = emptyList(), enable: Boolean = true){
|
||||||
this.event = event
|
this.event = event
|
||||||
this.menuName = menuName
|
this.menuName = menuName
|
||||||
this.menuWithText = menuWithText
|
this.menuWithText = menuWithText
|
||||||
this.isDisplay = isDisplay
|
this.isDisplay = isDisplay
|
||||||
|
this.enable = enable
|
||||||
}
|
}
|
||||||
|
|
||||||
val menuName: String
|
val menuName: String
|
||||||
@@ -22,7 +25,8 @@ enum class ActionEvent {
|
|||||||
|
|
||||||
val isDisplay: Boolean
|
val isDisplay: Boolean
|
||||||
|
|
||||||
val menuWithText: Boolean
|
val menuWithText: List<String>
|
||||||
|
val enable: Boolean
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getByMenuName(menuName: String) :ActionEvent {
|
fun getByMenuName(menuName: String) :ActionEvent {
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
// 新建文件 CircularProgressDrawable.kt
|
||||||
|
package com.loveerror.bested.button
|
||||||
|
|
||||||
|
import android.graphics.Canvas
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.graphics.Paint
|
||||||
|
import android.graphics.RectF
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
|
||||||
|
class CircularProgressDrawable : Drawable() {
|
||||||
|
private var progress = 0
|
||||||
|
private val paint = Paint(Paint.ANTI_ALIAS_FLAG)
|
||||||
|
private val rectF = RectF()
|
||||||
|
|
||||||
|
fun setProgress(progress: Int) {
|
||||||
|
this.progress = progress.coerceIn(0, 100)
|
||||||
|
invalidateSelf()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun draw(canvas: Canvas) {
|
||||||
|
val bounds = bounds
|
||||||
|
rectF.set(bounds)
|
||||||
|
|
||||||
|
// 绘制蓝色背景圆
|
||||||
|
paint.style = Paint.Style.FILL
|
||||||
|
paint.color = Color.BLUE
|
||||||
|
canvas.drawOval(rectF, paint)
|
||||||
|
|
||||||
|
// 绘制绿色进度扇形
|
||||||
|
if (progress > 0) {
|
||||||
|
paint.color = Color.GREEN
|
||||||
|
val sweepAngle = 360f * progress / 100f
|
||||||
|
canvas.drawArc(rectF, -90f, sweepAngle, true, paint)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setAlpha(alpha: Int) {
|
||||||
|
paint.alpha = alpha
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setColorFilter(colorFilter: android.graphics.ColorFilter?) {
|
||||||
|
paint.colorFilter = colorFilter
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getOpacity(): Int = android.graphics.PixelFormat.TRANSLUCENT
|
||||||
|
}
|
||||||
@@ -13,8 +13,8 @@ import android.widget.EditText
|
|||||||
import android.widget.PopupMenu
|
import android.widget.PopupMenu
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.ContextWrapper
|
import android.content.ContextWrapper
|
||||||
import android.app.Application
|
import android.widget.LinearLayout
|
||||||
import android.widget.Toast
|
|
||||||
class DragFloatingButton(context: Context) : View(context) {
|
class DragFloatingButton(context: Context) : View(context) {
|
||||||
private val paint = Paint().apply {
|
private val paint = Paint().apply {
|
||||||
isAntiAlias = true
|
isAntiAlias = true
|
||||||
@@ -31,22 +31,27 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
// 初始化时创建正确的 WindowManager.LayoutParams
|
// 初始化时创建正确的 WindowManager.LayoutParams
|
||||||
layoutParams = WindowManager.LayoutParams(
|
this.layoutParams = WindowManager.LayoutParams(
|
||||||
150, 150,
|
150, 150,
|
||||||
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
|
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
|
||||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
|
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
|
||||||
PixelFormat.TRANSLUCENT
|
PixelFormat.TRANSLUCENT
|
||||||
)
|
)
|
||||||
this.layoutParams = layoutParams
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDraw(canvas: Canvas) {
|
override fun onDraw(canvas: Canvas) {
|
||||||
super.onDraw(canvas)
|
super.onDraw(canvas)
|
||||||
canvas.let {
|
|
||||||
// 绘制圆形按钮
|
|
||||||
paint.color = Color.BLUE
|
|
||||||
it.drawCircle(width / 2f, height / 2f, minOf(width, height) / 2f, paint)
|
|
||||||
|
|
||||||
// 绘制菜单图标(三个点)
|
if (isProgressVisible && progressDrawable != null) {
|
||||||
|
// 设置进度drawable的边界
|
||||||
|
progressDrawable?.setBounds(0, 0, width, height)
|
||||||
|
progressDrawable?.draw(canvas)
|
||||||
|
} else {
|
||||||
|
// 绘制原始按钮
|
||||||
|
paint.color = Color.BLUE
|
||||||
|
canvas.drawCircle(width / 2f, height / 2f, minOf(width, height) / 2f, paint)
|
||||||
|
|
||||||
|
// 绘制菜单图标
|
||||||
paint.color = Color.WHITE
|
paint.color = Color.WHITE
|
||||||
paint.strokeWidth = 8f
|
paint.strokeWidth = 8f
|
||||||
val centerX = width / 2f
|
val centerX = width / 2f
|
||||||
@@ -54,9 +59,9 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
val dotRadius = 4f
|
val dotRadius = 4f
|
||||||
val spacing = 12f
|
val spacing = 12f
|
||||||
|
|
||||||
it.drawCircle(centerX, centerY - spacing, dotRadius, paint)
|
canvas.drawCircle(centerX, centerY - spacing, dotRadius, paint)
|
||||||
it.drawCircle(centerX, centerY, dotRadius, paint)
|
canvas.drawCircle(centerX, centerY, dotRadius, paint)
|
||||||
it.drawCircle(centerX, centerY + spacing, dotRadius, paint)
|
canvas.drawCircle(centerX, centerY + spacing, dotRadius, paint)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,10 +88,6 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
windowManager.updateViewLayout(this, layoutParams!!)
|
windowManager.updateViewLayout(this, layoutParams!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (layoutParams == null) {
|
|
||||||
// layoutParams = this.layoutParams as? WindowManager.LayoutParams
|
|
||||||
// }
|
|
||||||
|
|
||||||
originalX = layoutParams?.x ?: 0
|
originalX = layoutParams?.x ?: 0
|
||||||
originalY = layoutParams?.y ?: 0
|
originalY = layoutParams?.y ?: 0
|
||||||
isDragging = false
|
isDragging = false
|
||||||
@@ -130,7 +131,7 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
for (item in ActionEvent.entries){
|
for (item in ActionEvent.entries){
|
||||||
if (item.isDisplay) {
|
if (item.isDisplay) {
|
||||||
// 检查是否需要文本输入
|
// 检查是否需要文本输入
|
||||||
if (item.menuWithText) {
|
if (item.menuWithText.isNotEmpty()) {
|
||||||
popup.menu.add(0, item.ordinal, 0, item.menuName).setOnMenuItemClickListener {
|
popup.menu.add(0, item.ordinal, 0, item.menuName).setOnMenuItemClickListener {
|
||||||
showTextInputDialog(item)
|
showTextInputDialog(item)
|
||||||
true
|
true
|
||||||
@@ -144,44 +145,45 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
// 为不需要文本输入的菜单项设置监听器
|
// 为不需要文本输入的菜单项设置监听器
|
||||||
popup.setOnMenuItemClickListener { item ->
|
popup.setOnMenuItemClickListener { item ->
|
||||||
val actionEvent = ActionEvent.entries.find { it.ordinal == item.itemId }
|
val actionEvent = ActionEvent.entries.find { it.ordinal == item.itemId }
|
||||||
if (actionEvent != null && !actionEvent.menuWithText) {
|
if (actionEvent != null && actionEvent.menuWithText.isEmpty()) {
|
||||||
triggerActionEvent(actionEvent)
|
triggerActionEvent(actionEvent)
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
popup.show()
|
popup.show()
|
||||||
// popup.setOnMenuItemClickListener { item ->
|
|
||||||
// val actionEvent = ActionEvent.getByMenuName(item.title.toString())
|
|
||||||
// try {
|
|
||||||
// context.sendBroadcast(android.content.Intent(actionEvent.event).apply {
|
|
||||||
// setPackage(context.packageName)
|
|
||||||
// })
|
|
||||||
// } catch (e: IllegalArgumentException) {
|
|
||||||
// // 处理枚举值不存在的情况
|
|
||||||
// e.printStackTrace()
|
|
||||||
// println("枚举值不存在: ${item.title},${actionEvent}, ${e.toString()}")
|
|
||||||
// }
|
|
||||||
// true
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// popup.show()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showTextInputDialog(actionEvent: ActionEvent) {
|
private fun showTextInputDialog(actionEvent: ActionEvent) {
|
||||||
println("Attempting to show text input dialog for: ${actionEvent.menuName}")
|
println("Attempting to show text input dialog for: ${actionEvent.menuName}")
|
||||||
|
// 根据 actionEvent.menuWithText 创建对应数量的editText 放到一个 linearLayout 中
|
||||||
|
val editTexts = arrayListOf<EditText>()
|
||||||
|
val linearLayout = LinearLayout(context).apply {
|
||||||
|
// 设置布局参数
|
||||||
|
layoutParams = LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||||
|
)
|
||||||
|
}
|
||||||
|
for (menuWithText in actionEvent.menuWithText) {
|
||||||
|
val editText = EditText(context).apply {
|
||||||
|
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE
|
||||||
|
setLines(5)
|
||||||
|
gravity = Gravity.TOP or Gravity.START
|
||||||
|
setTextIsSelectable(true)
|
||||||
|
movementMethod = ScrollingMovementMethod.getInstance()
|
||||||
|
hint = menuWithText
|
||||||
|
tag = menuWithText
|
||||||
|
|
||||||
val editText = EditText(context).apply {
|
}
|
||||||
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE
|
linearLayout.addView(editText)
|
||||||
setLines(5)
|
editTexts.add(editText)
|
||||||
gravity = Gravity.TOP or Gravity.START
|
|
||||||
setTextIsSelectable(true)
|
|
||||||
movementMethod = ScrollingMovementMethod.getInstance()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val dialog = AlertDialog.Builder(context)
|
val dialog = AlertDialog.Builder(context)
|
||||||
.setTitle("请输入公司名称")
|
.setTitle("请输入公司名称")
|
||||||
.setView(editText)
|
.setView(linearLayout)
|
||||||
.setPositiveButton("确定", null) // 先设置为null,稍后手动处理
|
.setPositiveButton("确定", null) // 先设置为null,稍后手动处理
|
||||||
.setNegativeButton("取消", null)
|
.setNegativeButton("取消", null)
|
||||||
.create()
|
.create()
|
||||||
@@ -190,16 +192,22 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
dialog.setOnShowListener {
|
dialog.setOnShowListener {
|
||||||
val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
|
val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
|
||||||
positiveButton.setOnClickListener {
|
positiveButton.setOnClickListener {
|
||||||
val inputText = editText.text.toString().trim()
|
val textWithTags = mutableListOf<TextWithTag>()
|
||||||
// 如果文本为空,则显示提示并不关闭对话框
|
// 遍历editText eeditTexts
|
||||||
if (inputText.isEmpty()) {
|
for (editText in editTexts) {
|
||||||
// 在EditText下方显示错误提示
|
val inputText = editText.text.toString().trim()
|
||||||
editText.error = "请输入公司名称"
|
// 如果文本为空,则显示提示并不关闭对话框
|
||||||
// 不关闭对话框
|
if (inputText.isEmpty()) {
|
||||||
return@setOnClickListener
|
// 在EditText下方显示错误提示
|
||||||
|
editText.error = "请输入"+editText.hint
|
||||||
|
// 不关闭对话框
|
||||||
|
return@setOnClickListener
|
||||||
|
}
|
||||||
|
textWithTags.add(TextWithTag(inputText, editText.tag.toString()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 输入有效,触发事件并关闭对话框
|
// 输入有效,触发事件并关闭对话框
|
||||||
triggerActionEvent(actionEvent, inputText)
|
triggerActionEvent(actionEvent, textWithTags)
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -210,7 +218,14 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
|
|
||||||
dialog.show()
|
dialog.show()
|
||||||
}
|
}
|
||||||
|
class TextWithTag {
|
||||||
|
var text: String
|
||||||
|
var tag: String
|
||||||
|
constructor(text: String, tag: String) {
|
||||||
|
this.text = text
|
||||||
|
this.tag = tag
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getContextForDialog(): Context? {
|
private fun getContextForDialog(): Context? {
|
||||||
var currentContext = context
|
var currentContext = context
|
||||||
@@ -223,14 +238,14 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun triggerActionEvent(actionEvent: ActionEvent, textInput: String? = null) {
|
private fun triggerActionEvent(actionEvent: ActionEvent, textInputs: MutableList<TextWithTag> = mutableListOf()) {
|
||||||
try {
|
try {
|
||||||
val intent = android.content.Intent(actionEvent.event).apply {
|
val intent = android.content.Intent(actionEvent.event).apply {
|
||||||
setPackage(context.packageName)
|
setPackage(context.packageName)
|
||||||
}
|
}
|
||||||
// 如果有文本输入,添加到Intent中
|
// 如果有文本输入,添加到Intent中
|
||||||
textInput?.let {
|
for(textWithTag in textInputs){
|
||||||
intent.putExtra("textInput", it)
|
intent.putExtra(textWithTag.tag, textWithTag.text)
|
||||||
}
|
}
|
||||||
context.sendBroadcast(intent)
|
context.sendBroadcast(intent)
|
||||||
} catch (e: IllegalArgumentException) {
|
} catch (e: IllegalArgumentException) {
|
||||||
@@ -238,6 +253,32 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
println("枚举值不存在: $actionEvent, ${e.toString()}")
|
println("枚举值不存在: $actionEvent, ${e.toString()}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
private var progressDrawable: CircularProgressDrawable? = null
|
||||||
|
private var isProgressVisible = false
|
||||||
|
|
||||||
|
// 设置进度值
|
||||||
|
fun setProgress(progress: Int) {
|
||||||
|
if (progressDrawable == null) {
|
||||||
|
progressDrawable = CircularProgressDrawable()
|
||||||
|
}
|
||||||
|
progressDrawable?.setProgress(progress)
|
||||||
|
if (isProgressVisible) {
|
||||||
|
invalidate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示/隐藏进度条
|
||||||
|
fun showProgress(show: Boolean) {
|
||||||
|
isProgressVisible = show
|
||||||
|
if (show && progressDrawable == null) {
|
||||||
|
progressDrawable = CircularProgressDrawable()
|
||||||
|
}
|
||||||
|
invalidate()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,13 @@ class GlobalFloatingButtonManager(private val context: Context) {
|
|||||||
|
|
||||||
private var broadcastReceiver: BroadcastReceiver? = null
|
private var broadcastReceiver: BroadcastReceiver? = null
|
||||||
private var isEnabled = true // 添加启用状态标志
|
private var isEnabled = true // 添加启用状态标志
|
||||||
|
|
||||||
|
fun getFloatingButton(context: Context): DragFloatingButton {
|
||||||
|
if (floatingButton == null) {
|
||||||
|
floatingButton = DragFloatingButton(context.applicationContext)
|
||||||
|
}
|
||||||
|
return floatingButton!!
|
||||||
|
}
|
||||||
fun initialize() {
|
fun initialize() {
|
||||||
// 注册广播接收器
|
// 注册广播接收器
|
||||||
broadcastReceiver = object : BroadcastReceiver() {
|
broadcastReceiver = object : BroadcastReceiver() {
|
||||||
|
|||||||
38
app/src/main/java/com/loveerror/bested/handler/FieldName.kt
Normal file
38
app/src/main/java/com/loveerror/bested/handler/FieldName.kt
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package com.loveerror.bested.handler
|
||||||
|
|
||||||
|
class FieldName {
|
||||||
|
|
||||||
|
val defaultValue: String
|
||||||
|
val type: FieldType
|
||||||
|
|
||||||
|
constructor(fieldName: String, hintText: String, defaultValue: String, type: FieldType = FieldType.TEXT){
|
||||||
|
this.fieldName = fieldName
|
||||||
|
this.hintText = hintText
|
||||||
|
this.defaultValue = defaultValue
|
||||||
|
this.type = type
|
||||||
|
}
|
||||||
|
val fieldName: String
|
||||||
|
val hintText: String
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class FieldType {
|
||||||
|
TEXT,
|
||||||
|
SELECT,
|
||||||
|
SEARCH_SELECT,
|
||||||
|
CHECKBOX,
|
||||||
|
RADIO,
|
||||||
|
DATE,
|
||||||
|
TIME,
|
||||||
|
NUMBER,
|
||||||
|
CURRENCY,
|
||||||
|
EMAIL,
|
||||||
|
PHONE,
|
||||||
|
ADDRESS,
|
||||||
|
URL,
|
||||||
|
PASSWORD,
|
||||||
|
FILE,
|
||||||
|
IMAGE,
|
||||||
|
VIDEO,
|
||||||
|
AUDIO,
|
||||||
|
OTHER
|
||||||
|
}
|
||||||
@@ -1,56 +1,20 @@
|
|||||||
package com.loveerror.bested.handler
|
package com.loveerror.bested.handler
|
||||||
|
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
import com.loveerror.bested.UIInspectorService
|
|
||||||
import com.loveerror.bested.tool.AccessibilityTool
|
import com.loveerror.bested.tool.AccessibilityTool
|
||||||
|
import com.loveerror.bested.tool.AccessibilityTool.Companion.performBottomSheetSelection
|
||||||
import com.loveerror.bested.tool.NodeToolHint
|
import com.loveerror.bested.tool.NodeToolHint
|
||||||
import com.loveerror.bested.tool.NodeToolText
|
import com.loveerror.bested.tool.NodeToolText
|
||||||
import com.loveerror.bested.tool.NodeToolTime
|
import com.loveerror.bested.tool.RootNodeCallback
|
||||||
|
|
||||||
class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService){
|
class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
|
||||||
|
|
||||||
fun getRootInActiveWindow(): AccessibilityNodeInfo?{
|
fun getRootInActiveWindow(): AccessibilityNodeInfo? {
|
||||||
return uiInspectorService.rootInActiveWindow
|
return rootNodeCallback.getRootNodeReceived()
|
||||||
}
|
|
||||||
|
|
||||||
class FieldName {
|
|
||||||
|
|
||||||
val fieldName: String
|
|
||||||
val hintText: String
|
|
||||||
val defaultValue: String
|
|
||||||
val type: FieldType
|
|
||||||
|
|
||||||
constructor(fieldName: String, hintText: String, defaultValue: String, type: FieldType = FieldType.TEXT){
|
|
||||||
this.fieldName = fieldName
|
|
||||||
this.hintText = hintText
|
|
||||||
this.defaultValue = defaultValue
|
|
||||||
this.type = type
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum class FieldType {
|
|
||||||
TEXT,
|
|
||||||
SELECT,
|
|
||||||
SEARCH_SELECT,
|
|
||||||
CHECKBOX,
|
|
||||||
RADIO,
|
|
||||||
DATE,
|
|
||||||
TIME,
|
|
||||||
NUMBER,
|
|
||||||
CURRENCY,
|
|
||||||
EMAIL,
|
|
||||||
PHONE,
|
|
||||||
ADDRESS,
|
|
||||||
URL,
|
|
||||||
PASSWORD,
|
|
||||||
FILE,
|
|
||||||
IMAGE,
|
|
||||||
VIDEO,
|
|
||||||
AUDIO,
|
|
||||||
OTHER
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var fields = arrayListOf<FieldName>()
|
var fields = arrayListOf<FieldName>()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
fields.add(FieldName("集团名称", "请输入集团名称", "集团abc", FieldType.TEXT))
|
fields.add(FieldName("集团名称", "请输入集团名称", "集团abc", FieldType.TEXT))
|
||||||
fields.add(FieldName("证件名称", "证件名称", "jituan", FieldType.TEXT))
|
fields.add(FieldName("证件名称", "证件名称", "jituan", FieldType.TEXT))
|
||||||
@@ -66,11 +30,8 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
fields.add(FieldName("集团等级", "", "D", FieldType.TEXT))
|
fields.add(FieldName("集团等级", "", "D", FieldType.TEXT))
|
||||||
fields.add(FieldName("建筑物名称", "请输入搜索地址", "金牛座", FieldType.SEARCH_SELECT))
|
fields.add(FieldName("建筑物名称", "请输入搜索地址", "金牛座", FieldType.SEARCH_SELECT))
|
||||||
fields.add(FieldName("细分客群", "", "其他", FieldType.SELECT))
|
fields.add(FieldName("细分客群", "", "其他", FieldType.SELECT))
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动填充普通集团建档表单
|
* 自动填充普通集团建档表单
|
||||||
* @param root AccessibilityNodeInfo根节点
|
* @param root AccessibilityNodeInfo根节点
|
||||||
@@ -95,27 +56,46 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
// 先展开分类信息区域
|
// 先展开分类信息区域
|
||||||
// expandClassificationSection(root)
|
// expandClassificationSection(root)
|
||||||
|
|
||||||
for(field in fields){
|
for (field in fields) {
|
||||||
if (field.type == FieldType.SELECT){
|
if (field.type == FieldType.SELECT) {
|
||||||
performBottomSheetSelection(root, field.fieldName, fieldMap[field.fieldName] ?: field.defaultValue)
|
AccessibilityTool.performBottomSheetSelection(
|
||||||
}else if(field.type == FieldType.TIME){
|
rootNodeCallback = rootNodeCallback,
|
||||||
|
field.fieldName,
|
||||||
|
fieldMap[field.fieldName] ?: field.defaultValue
|
||||||
|
)
|
||||||
|
} else if (field.type == FieldType.TIME) {
|
||||||
// 格式化证件有效期 >2090-11-23 格式化为2090-11-23
|
// 格式化证件有效期 >2090-11-23 格式化为2090-11-23
|
||||||
val date = normalizeExpiryDate(fieldMap[field.fieldName] ?: field.defaultValue, field.defaultValue)
|
val date = AccessibilityTool.normalizeExpiryDate(
|
||||||
performBottomTimeSelection(root, field.fieldName,date)
|
fieldMap[field.fieldName] ?: field.defaultValue, field.defaultValue
|
||||||
|
)
|
||||||
|
AccessibilityTool.performBottomTimeSelection(
|
||||||
|
rootNodeCallback,
|
||||||
|
field.fieldName,
|
||||||
|
date
|
||||||
|
)
|
||||||
|
|
||||||
}else if (field.type == FieldType.SEARCH_SELECT){
|
} else if (field.type == FieldType.SEARCH_SELECT) {
|
||||||
performBottomSearchSelection(root, field.fieldName, field.hintText, fieldMap[field.fieldName] ?: field.defaultValue)
|
AccessibilityTool.performBottomSearchSelection(
|
||||||
}else{
|
rootNodeCallback, field.fieldName,
|
||||||
fillEditTextByHintText(root,fieldMap[field.fieldName] ?: field.defaultValue, field.fieldName, field.hintText)
|
field.hintText, fieldMap[field.fieldName] ?: field.defaultValue
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
AccessibilityTool.fillEditTextByHintText(
|
||||||
|
root, fieldMap[field.fieldName] ?: field.defaultValue, field.fieldName,
|
||||||
|
field.hintText
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AccessibilityTool.printViewTree(uiInspectorService.rootInActiveWindow,"after 已点击兄弟节点")
|
AccessibilityTool.printViewTree(
|
||||||
var rootNew = uiInspectorService.rootInActiveWindow
|
rootNodeCallback.getRootNodeReceived(),
|
||||||
|
"after 已点击兄弟节点"
|
||||||
|
)
|
||||||
|
var rootNew = rootNodeCallback.getRootNodeReceived()
|
||||||
|
|
||||||
var peopleCountNode = NodeToolText.findNodeByText(rootNew,"请输入人数")
|
var peopleCountNode = NodeToolText.findNodeByText(rootNew, "请输入人数")
|
||||||
|
|
||||||
if (peopleCountNode == null){
|
if (peopleCountNode == null) {
|
||||||
println("未找到员工数输入框")
|
println("未找到员工数输入框")
|
||||||
// 使用示例
|
// 使用示例
|
||||||
val targetNode = NodeToolText.findNodeByText(root, "分类信息")
|
val targetNode = NodeToolText.findNodeByText(root, "分类信息")
|
||||||
@@ -132,13 +112,17 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
} else {
|
} else {
|
||||||
println("未找到可点击的兄弟节点")
|
println("未找到可点击的兄弟节点")
|
||||||
}
|
}
|
||||||
rootNew = uiInspectorService.rootInActiveWindow
|
rootNew = rootNodeCallback.getRootNodeReceived()
|
||||||
peopleCountNode = NodeToolText.findNodeByText(rootNew,"请输入人数")
|
peopleCountNode = NodeToolText.findNodeByText(rootNew, "请输入人数")
|
||||||
}
|
}
|
||||||
fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1","员工数")
|
AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数")
|
||||||
// fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数")
|
// fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数")
|
||||||
|
|
||||||
clickToOpenBottomSheetAddress(root, "请点击此处打点","浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座")
|
clickToOpenBottomSheetAddress(
|
||||||
|
root,
|
||||||
|
"请点击此处打点",
|
||||||
|
"浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座"
|
||||||
|
)
|
||||||
// 示例:点击"集团状态"触发底部选择,选择"在网集团"
|
// 示例:点击"集团状态"触发底部选择,选择"在网集团"
|
||||||
// fillCompanyNameField(root, groupName)
|
// fillCompanyNameField(root, groupName)
|
||||||
|
|
||||||
@@ -147,19 +131,23 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 打点
|
// 打点
|
||||||
private fun clickToOpenBottomSheetAddress(root: AccessibilityNodeInfo, triggerText: String,address: String) {
|
private fun clickToOpenBottomSheetAddress(
|
||||||
|
root: AccessibilityNodeInfo,
|
||||||
|
triggerText: String,
|
||||||
|
address: String
|
||||||
|
) {
|
||||||
//
|
//
|
||||||
val triggerNode = NodeToolText.findNodeByText(root, triggerText)
|
val triggerNode = NodeToolText.findNodeByText(root, triggerText)
|
||||||
|
|
||||||
// 父级的可点击
|
// 父级的可点击
|
||||||
if (triggerNode != null ) {
|
if (triggerNode != null) {
|
||||||
AccessibilityTool.performClick(triggerNode)
|
AccessibilityTool.performClick(triggerNode)
|
||||||
println("已点击打点按钮")
|
println("已点击打点按钮")
|
||||||
} else {
|
} else {
|
||||||
println("未找到打点按钮")
|
println("未找到打点按钮")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if(!checkTextViewWithRetry()){
|
if (!checkTextViewWithRetry()) {
|
||||||
println("未找到宽带选址")
|
println("未找到宽带选址")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -176,7 +164,7 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
}
|
}
|
||||||
Thread.sleep(3000)
|
Thread.sleep(3000)
|
||||||
var clickFirst = findTargetElement(getRootInActiveWindow())
|
var clickFirst = findTargetElement(getRootInActiveWindow())
|
||||||
if(clickFirst == null){
|
if (clickFirst == null) {
|
||||||
println("clickFirst is null")
|
println("clickFirst is null")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -184,13 +172,14 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
Thread.sleep(3000)
|
Thread.sleep(3000)
|
||||||
|
|
||||||
var searchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "搜索")
|
var searchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "搜索")
|
||||||
if(searchButton ==null){
|
if (searchButton == null) {
|
||||||
println("未找到搜索按钮")
|
println("未找到搜索按钮")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 获取搜索 按钮 前面挨着的 android.widget.EditText [text=] [desc=] [id=search] 元素
|
// 获取搜索 按钮 前面挨着的 android.widget.EditText [text=] [desc=] [id=search] 元素
|
||||||
val searchEditText = NodeToolText.findPreviousSiblingNode(searchButton, "android.widget.EditText")
|
val searchEditText =
|
||||||
if (searchEditText == null){
|
NodeToolText.findPreviousSiblingNode(searchButton, "android.widget.EditText")
|
||||||
|
if (searchEditText == null) {
|
||||||
println("未找到搜索框")
|
println("未找到搜索框")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -206,19 +195,19 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
|
|
||||||
|
|
||||||
searchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "搜索")
|
searchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "搜索")
|
||||||
if(searchButton ==null){
|
if (searchButton == null) {
|
||||||
println("未找到搜索按钮")
|
println("未找到搜索按钮")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var resultNode = NodeToolText.findNextSiblingNode(searchButton.parent)
|
var resultNode = NodeToolText.findNextSiblingNode(searchButton.parent)
|
||||||
if(resultNode == null){
|
if (resultNode == null) {
|
||||||
println("未找到下一个节点")
|
println("未找到下一个节点")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var nodeA =NodeToolText.findNodeByText(resultNode,"五常西溪软件园金牛座-A座")
|
var nodeA = NodeToolText.findNodeByText(resultNode, "五常西溪软件园金牛座-A座")
|
||||||
if(nodeA == null){
|
if (nodeA == null) {
|
||||||
println("未找到五常西溪软件园金牛座-A座")
|
println("未找到五常西溪软件园金牛座-A座")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -226,14 +215,14 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
AccessibilityTool.performClick(nodeA)
|
AccessibilityTool.performClick(nodeA)
|
||||||
|
|
||||||
Thread.sleep(3000)
|
Thread.sleep(3000)
|
||||||
AccessibilityTool.dismissPopupByClickingMask( getRootInActiveWindow())
|
AccessibilityTool.dismissPopupByClickingMask(getRootInActiveWindow())
|
||||||
// Thread.sleep(2000)
|
// Thread.sleep(2000)
|
||||||
// AccessibilityTool.dismissPopupByClickingMask( getRootInActiveWindow())
|
// AccessibilityTool.dismissPopupByClickingMask( getRootInActiveWindow())
|
||||||
|
|
||||||
|
|
||||||
Thread.sleep(2000)
|
Thread.sleep(2000)
|
||||||
var newAddress = NodeToolText.findNodeByText(getRootInActiveWindow(),"新增")
|
val newAddress = NodeToolText.findNodeByText(getRootInActiveWindow(), "新增")
|
||||||
if(newAddress == null){
|
if (newAddress == null) {
|
||||||
println("未找到新增")
|
println("未找到新增")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -241,18 +230,18 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
|
|
||||||
Thread.sleep(3000)
|
Thread.sleep(3000)
|
||||||
|
|
||||||
performBottomSheetSelection(getRootInActiveWindow(), "区县","余杭区")
|
performBottomSheetSelection(rootNodeCallback, "区县", "余杭区")
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
performBottomSheetSelection(getRootInActiveWindow(), "街道","五常街道")
|
performBottomSheetSelection(rootNodeCallback, "街道", "五常街道")
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
val addressDetail = NodeToolHint.findNodeByHint(getRootInActiveWindow(), "请输入详细地址")
|
val addressDetail = NodeToolHint.findNodeByHint(getRootInActiveWindow(), "请输入详细地址")
|
||||||
if(addressDetail == null){
|
if (addressDetail == null) {
|
||||||
println("未找到详细地址")
|
println("未找到详细地址")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
AccessibilityTool.inputText(addressDetail, "五常西溪软件园金牛座-A座4层101号")
|
AccessibilityTool.inputText(addressDetail, "五常西溪软件园金牛座-A座4层101号")
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
AccessibilityTool.dismissPopupByClickingMask( getRootInActiveWindow())
|
AccessibilityTool.dismissPopupByClickingMask(getRootInActiveWindow())
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -291,259 +280,22 @@ class NormalGroupCreateForm (private val uiInspectorService: UIInspectorService)
|
|||||||
return false // 5次尝试后仍未找到
|
return false // 5次尝试后仍未找到
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun performBottomSearchSelection(
|
|
||||||
root: AccessibilityNodeInfo,
|
|
||||||
fieldName: String,
|
|
||||||
hintText: String ,
|
|
||||||
searchWord: String,
|
|
||||||
){
|
|
||||||
try {
|
|
||||||
// 1. 点击触发元素打开搜索对话框
|
|
||||||
clickToOpenBottomSheet(root, fieldName)
|
|
||||||
|
|
||||||
// 2. 等待对话框完全显示
|
|
||||||
Thread.sleep(1000)
|
|
||||||
|
|
||||||
// 3. 获取更新后的根节点
|
|
||||||
val newRoot = getRootInActiveWindow() ?: root
|
|
||||||
|
|
||||||
// 4. 查找搜索输入框
|
|
||||||
val searchEditText = NodeToolHint.findNodeByHint(newRoot, hintText)
|
|
||||||
if (searchEditText != null && searchEditText.isEditable) {
|
|
||||||
// 5. 输入搜索关键词
|
|
||||||
AccessibilityTool.inputText(searchEditText, searchWord)
|
|
||||||
println("已在搜索框中输入: $searchWord")
|
|
||||||
AccessibilityTool.performSearchEnter(searchEditText)
|
|
||||||
// 6. 等待搜索结果加载
|
|
||||||
Thread.sleep(5000)
|
|
||||||
|
|
||||||
// 7. 选择第一个搜索结果(如果有)
|
|
||||||
selectFirstSearchResult(newRoot)
|
|
||||||
} else {
|
|
||||||
println("未找到搜索输入框或输入框不可编辑")
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
println("搜索选择操作失败: ${e.message}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun selectFirstSearchResult(root: AccessibilityNodeInfo) {
|
|
||||||
// 查找可点击的搜索结果项
|
|
||||||
// 根据UI树,搜索结果可能在 "没有更多了..." 之前
|
|
||||||
val searchResult = findClickableSearchResult(root)
|
|
||||||
if (searchResult != null && searchResult.isClickable) {
|
|
||||||
AccessibilityTool.ensureNodeVisible(searchResult)
|
|
||||||
AccessibilityTool.performClick(searchResult)
|
|
||||||
println("已选择第一个搜索结果")
|
|
||||||
|
|
||||||
// 点击确认按钮
|
|
||||||
Thread.sleep(500)
|
|
||||||
val confirmButton = NodeToolText.findNodeByText(root, "确认")
|
|
||||||
?: NodeToolText.findNodeByText(root, "确定")
|
|
||||||
if (confirmButton?.isClickable == true) {
|
|
||||||
AccessibilityTool.performClick(confirmButton)
|
|
||||||
println("已点击确认按钮")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
println("未找到可点击的搜索结果")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun findClickableSearchResult(root: AccessibilityNodeInfo): AccessibilityNodeInfo? {
|
|
||||||
// 遍历查找可点击的搜索结果项
|
|
||||||
// 这里可以根据具体的UI结构进行调整
|
|
||||||
return NodeToolText.findNodeByText(root, "金牛座") // 示例匹配
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun normalizeExpiryDate(dateString: String, defaultValue: String="2090-11-23", maxValue: String="2090-11-23"): String {
|
|
||||||
// 如果不是日期格式,返回默认值
|
|
||||||
if (!dateString.matches(Regex("\\d{4}-\\d{2}-\\d{2}"))) {
|
|
||||||
return defaultValue // 默认值
|
|
||||||
}
|
|
||||||
|
|
||||||
// 比较日期是否大于最大值
|
|
||||||
val inputDate = dateString.replace("-", "").toIntOrNull() ?: 0
|
|
||||||
val maxDateValue = maxValue.replace("-", "").toIntOrNull() ?: 20901123
|
|
||||||
|
|
||||||
return if (inputDate > maxDateValue) {
|
|
||||||
maxValue // 限制最大值
|
|
||||||
} else {
|
|
||||||
dateString // 保持原值
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private fun performBottomTimeSelection(
|
|
||||||
root: AccessibilityNodeInfo,
|
|
||||||
fieldName: String,
|
|
||||||
date: String,
|
|
||||||
) {
|
|
||||||
|
|
||||||
// 校验格式是否为日期格式
|
|
||||||
if (!date.matches(Regex("\\d{4}-\\d{2}-\\d{2}"))) {
|
|
||||||
throw IllegalArgumentException("Invalid date format. Please provide a date in the format YYYY-MM-DD.")
|
|
||||||
}
|
|
||||||
// 解析出年、月、日
|
|
||||||
val (year, month, day) = date.split("-")
|
|
||||||
|
|
||||||
// 1. 点击触发元素打开底部对话框
|
|
||||||
clickToOpenBottomSheet(root, fieldName)
|
|
||||||
|
|
||||||
// 2. 等待对话框完全显示
|
|
||||||
Thread.sleep(1000)
|
|
||||||
|
|
||||||
NodeToolTime.selectDateWithRetry(root, year, month, day,
|
|
||||||
{ getRootInActiveWindow() })
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 点击可点击的触发元素来显示底部选择对话框
|
|
||||||
fun clickToOpenBottomSheet(root: AccessibilityNodeInfo, triggerText: String) {
|
|
||||||
val triggerNode = NodeToolText.findNodeByText(root, triggerText)
|
|
||||||
if (triggerNode != null && triggerNode.isClickable) {
|
|
||||||
AccessibilityTool.ensureNodeVisible(triggerNode)
|
|
||||||
AccessibilityTool.performClick(triggerNode)
|
|
||||||
Thread.sleep(1000) // 等待对话框弹出
|
|
||||||
}else{
|
|
||||||
|
|
||||||
var parent = triggerNode?.parent
|
|
||||||
while (parent != null) {
|
|
||||||
if (parent.isClickable) {
|
|
||||||
AccessibilityTool.ensureNodeVisible(parent)
|
|
||||||
AccessibilityTool.performClick(parent)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
parent = parent.parent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 完整流程:点击触发 -> 选择选项
|
// 完整流程:点击触发 -> 选择选项
|
||||||
fun performBottomSheetSelection(root: AccessibilityNodeInfo?, triggerText: String, optionText: String) {
|
|
||||||
if(root == null){
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 1. 点击触发元素打开底部对话框
|
|
||||||
clickToOpenBottomSheet(root, triggerText)
|
|
||||||
|
|
||||||
// 2. 等待对话框完全显示
|
|
||||||
Thread.sleep(1000)
|
|
||||||
|
|
||||||
// 3. 选择目标选项
|
|
||||||
selectOptionFromBottomSheet(optionText)
|
|
||||||
|
|
||||||
// 4. 明确点击确认按钮 dubbo check
|
|
||||||
val newRoot = uiInspectorService.rootInActiveWindow
|
|
||||||
clickConfirmButton(newRoot)
|
|
||||||
Thread.sleep(500) // 等待确认操作完成
|
|
||||||
}
|
|
||||||
|
|
||||||
// 在底部对话框中选择指定选项
|
|
||||||
fun selectOptionFromBottomSheet(optionText: String, confirm: Boolean = true) {
|
|
||||||
// 获取更新后的根节点
|
|
||||||
val newRoot = uiInspectorService.rootInActiveWindow
|
|
||||||
|
|
||||||
// 查找并点击选项
|
|
||||||
val optionNode = NodeToolText.findNodeByText(newRoot, optionText)
|
|
||||||
if (optionNode != null) {
|
|
||||||
AccessibilityTool.ensureNodeVisible(optionNode)
|
|
||||||
if (optionNode.isClickable) {
|
|
||||||
AccessibilityTool.performClick(optionNode)
|
|
||||||
println("已选择底部选项: $optionText")
|
|
||||||
|
|
||||||
// 根据需要点击确认或取消按钮
|
|
||||||
if (confirm) {
|
|
||||||
clickConfirmButton(newRoot)
|
|
||||||
} else {
|
|
||||||
clickCancelButton(newRoot)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
println("未找到底部选项: $optionText")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 点击确认按钮
|
|
||||||
private fun clickConfirmButton(root: AccessibilityNodeInfo): Boolean {
|
|
||||||
val confirmButton = NodeToolText.findNodeByText(root, "确定")
|
|
||||||
?: NodeToolText.findNodeByText(root, "确认")
|
|
||||||
|
|
||||||
println("查找确认按钮: ${confirmButton != null}")
|
|
||||||
if (confirmButton != null) {
|
|
||||||
println("确认按钮属性 - clickable: ${confirmButton.isClickable}, visibleToUser: ${confirmButton.isVisibleToUser}")
|
|
||||||
if (confirmButton.isClickable) {
|
|
||||||
AccessibilityTool.ensureNodeVisible(confirmButton)
|
|
||||||
AccessibilityTool.performClick(confirmButton)
|
|
||||||
println("已点击确认按钮")
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
println("确认按钮不可点击")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
println("未找到确认按钮")
|
|
||||||
// 打印当前界面树以便调试
|
|
||||||
AccessibilityTool.printViewTree(root, "确认按钮未找到时的界面树")
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 点击取消按钮
|
|
||||||
private fun clickCancelButton(root: AccessibilityNodeInfo) {
|
|
||||||
val cancelButton = NodeToolText.findNodeByText(root, "取消")
|
|
||||||
if (cancelButton != null && cancelButton.isClickable) {
|
|
||||||
AccessibilityTool.performClick(cancelButton)
|
|
||||||
println("已点击取消按钮")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun expandClassificationSection(root: AccessibilityNodeInfo) {
|
|
||||||
var peopleCountNode = NodeToolText.findNodeByText(root, "请输入人数")
|
|
||||||
if (peopleCountNode == null) {
|
|
||||||
println("未找到员工数输入框")
|
|
||||||
val targetNode = NodeToolText.findNodeByText(root, "分类信息")
|
|
||||||
val nextSibling = NodeToolText.findNextSiblingNode(targetNode)
|
|
||||||
|
|
||||||
if (nextSibling != null && nextSibling.isClickable) {
|
|
||||||
AccessibilityTool.ensureNodeVisible(nextSibling)
|
|
||||||
AccessibilityTool.performClick(nextSibling)
|
|
||||||
Thread.sleep(2000)
|
|
||||||
println("已点击兄弟节点")
|
|
||||||
} else {
|
|
||||||
println("未找到可点击的兄弟节点")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 填写集团名称字段
|
* 填写集团名称字段
|
||||||
* 根据UI树分析,查找hint为"请输入集团名称"的EditText并填入值
|
* 根据UI树分析,查找hint为"请输入集团名称"的EditText并填入值
|
||||||
*/
|
*/
|
||||||
private fun fillGroupNameField(root: AccessibilityNodeInfo, value: String) {
|
private fun fillGroupNameField(root: AccessibilityNodeInfo, value: String) {
|
||||||
fillEditTextByHintText(root,value, "集团名称","请输入集团名称")
|
AccessibilityTool.fillEditTextByHintText(root, value, "集团名称", "请输入集团名称")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fillCompanyNameField(root: AccessibilityNodeInfo, value: String) {
|
private fun fillCompanyNameField(root: AccessibilityNodeInfo, value: String) {
|
||||||
fillEditTextByHintText(root,value, "证件名称","证件名称")
|
AccessibilityTool.fillEditTextByHintText(root, value, "证件名称", "证件名称")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fillEditTextByHintText(root: AccessibilityNodeInfo, value: String, fieldName : String, hintText: String) {
|
|
||||||
var editTextNode = NodeToolHint.findNodeByHint(root, hintText)
|
|
||||||
fillEditText(editTextNode,value,fieldName)
|
|
||||||
}
|
|
||||||
private fun fillEditText(editText: AccessibilityNodeInfo?, value: String, fieldName : String) {
|
|
||||||
if (editText == null) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (editText.isEditable) {
|
|
||||||
AccessibilityTool.inputText(editText, value)
|
|
||||||
println("已填写$fieldName: $value")
|
|
||||||
} else {
|
|
||||||
println("未找到${fieldName}输入框或输入框不可编辑")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 选择集团状态
|
* 选择集团状态
|
||||||
|
|||||||
@@ -0,0 +1,387 @@
|
|||||||
|
package com.loveerror.bested.handler
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
|
import com.loveerror.bested.button.DragFloatingButton
|
||||||
|
import com.loveerror.bested.tool.AccessibilityTool
|
||||||
|
import com.loveerror.bested.tool.AccessibilityTool.Companion.performBottomSheetSelection
|
||||||
|
import com.loveerror.bested.tool.CsvTool
|
||||||
|
import com.loveerror.bested.tool.NodeToolHint
|
||||||
|
import com.loveerror.bested.tool.NodeToolText
|
||||||
|
import com.loveerror.bested.tool.RootNodeCallback
|
||||||
|
import com.loveerror.bested.tool.StorageTool
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.Date
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
|
|
||||||
|
class SearchCompanyForm(private val rootNodeCallback: RootNodeCallback,
|
||||||
|
private val floatingButton: DragFloatingButton? = null) {
|
||||||
|
|
||||||
|
var fields = arrayListOf<FieldName>()
|
||||||
|
init {
|
||||||
|
fields.add(FieldName("集团名称", "请输入集团名称", "", FieldType.TEXT))
|
||||||
|
}
|
||||||
|
fun getRootInActiveWindow(): AccessibilityNodeInfo?{
|
||||||
|
return rootNodeCallback.getRootNodeReceived()
|
||||||
|
}
|
||||||
|
fun autoFillForm(root: AccessibilityNodeInfo, intent: Intent) {
|
||||||
|
|
||||||
|
val companyNames = intent.getStringExtra("companyNames")
|
||||||
|
if (companyNames.isNullOrEmpty()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// split by \n and trim and ignore empty
|
||||||
|
val companies = companyNames.split("\n").map { it.trim() }.filter { it.isNotEmpty() }.distinct()
|
||||||
|
|
||||||
|
if(companies.isEmpty()){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val resultsAll = arrayListOf<CompanyInfo>()
|
||||||
|
|
||||||
|
|
||||||
|
// 添加进度跟踪
|
||||||
|
val totalCompanies = companies.size
|
||||||
|
println("开始搜索 $totalCompanies 个公司...")
|
||||||
|
|
||||||
|
for ((index, company) in companies.withIndex()) {
|
||||||
|
|
||||||
|
// 使用ASCII进度条显示进度
|
||||||
|
val progress = ((index + 1) * 100 / totalCompanies)
|
||||||
|
updateProgress(progress)
|
||||||
|
println(" 正在搜索: $company")
|
||||||
|
println("进度: $progress% ($index+1/$totalCompanies) - 正在搜索: $company")
|
||||||
|
|
||||||
|
|
||||||
|
val fieldMap = mapOf<String, String>(
|
||||||
|
"集团名称" to company,
|
||||||
|
)
|
||||||
|
|
||||||
|
// 搜索公司
|
||||||
|
val results = searchCompany(root,fieldMap)
|
||||||
|
if(results.isEmpty()){
|
||||||
|
resultsAll.add(CompanyInfo(company,"N", "", "", "",
|
||||||
|
AddressInfo("", "", "", "", detail = ""),
|
||||||
|
"", "", ""))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// for results to set item.searchName = company
|
||||||
|
for (item in results) {
|
||||||
|
item.searchName = company
|
||||||
|
item.isArchived = "X "+item.manager
|
||||||
|
}
|
||||||
|
resultsAll.addAll( results)
|
||||||
|
|
||||||
|
// 可选:添加延迟避免请求过于频繁
|
||||||
|
if (index < companies.size - 1) {
|
||||||
|
Thread.sleep(500) // 每个搜索之间间隔500ms
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示100%完成进度
|
||||||
|
updateProgress(100)
|
||||||
|
println("搜索完成,共找到 ${resultsAll.size} 条记录")
|
||||||
|
writeResultsToCsv(resultsAll)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ProgressCallback {
|
||||||
|
fun onProgressUpdate(current: Int, total: Int, message: String)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateProgress(progress: Int) {
|
||||||
|
// 更新控制台进度条
|
||||||
|
printProgressBar(progress)
|
||||||
|
|
||||||
|
Handler(Looper.getMainLooper()).postDelayed({
|
||||||
|
// 更新悬浮按钮进度(如果可用)
|
||||||
|
floatingButton?.showProgress(true)
|
||||||
|
floatingButton?.setProgress(progress)
|
||||||
|
}, 500)
|
||||||
|
|
||||||
|
}
|
||||||
|
private fun printProgressBar(progress: Int, width: Int = 30) {
|
||||||
|
val completed = (width * progress / 100)
|
||||||
|
val bar = "[" + "█".repeat(completed) + "░".repeat(width - completed) + "] $progress%"
|
||||||
|
print("\r$bar")
|
||||||
|
if (progress == 100) println() // 完成后换行
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun searchCompany(
|
||||||
|
root: AccessibilityNodeInfo,
|
||||||
|
fieldMap: Map<String, String>
|
||||||
|
): List<CompanyInfo> {
|
||||||
|
for(field in fields){
|
||||||
|
if (field.type == FieldType.SELECT){
|
||||||
|
performBottomSheetSelection(rootNodeCallback, field.fieldName, fieldMap[field.fieldName] ?: field.defaultValue)
|
||||||
|
}else if(field.type == FieldType.TIME){
|
||||||
|
// 格式化证件有效期 >2090-11-23 格式化为2090-11-23
|
||||||
|
val date = AccessibilityTool.normalizeExpiryDate(fieldMap[field.fieldName] ?: field.defaultValue, field.defaultValue)
|
||||||
|
AccessibilityTool.performBottomTimeSelection(rootNodeCallback, field.fieldName,date)
|
||||||
|
|
||||||
|
}else if (field.type == FieldType.SEARCH_SELECT){
|
||||||
|
AccessibilityTool.performBottomSearchSelection(rootNodeCallback, field.fieldName,
|
||||||
|
field.hintText, fieldMap[field.fieldName] ?: field.defaultValue)
|
||||||
|
}else{
|
||||||
|
AccessibilityTool.fillEditTextByHintText(root,fieldMap[field.fieldName] ?: field.defaultValue, field.fieldName,
|
||||||
|
field.hintText
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val searchInput = NodeToolHint.findNodeByHint(getRootInActiveWindow(), "请输入集团名称")
|
||||||
|
if (searchInput == null) {
|
||||||
|
println("未找到搜索输入框")
|
||||||
|
return emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccessibilityTool.fillEditTextByHintText(root,"天买", "请输入集团名称",
|
||||||
|
// "请输入集团名称"
|
||||||
|
// )
|
||||||
|
|
||||||
|
Handler(Looper.getMainLooper()).postDelayed({
|
||||||
|
AccessibilityTool.performSearchEnter(searchInput)
|
||||||
|
}, 500)
|
||||||
|
Thread.sleep(1000)
|
||||||
|
for(i in 0..20){
|
||||||
|
val loading = NodeToolText.findNodeByText(getRootInActiveWindow(), "加载中")
|
||||||
|
if (loading == null) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
println()
|
||||||
|
println("等待加载完成")
|
||||||
|
Thread.sleep(1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
val root = getRootInActiveWindow()
|
||||||
|
if (root == null) {
|
||||||
|
println("未找到根节点")
|
||||||
|
return listOf()
|
||||||
|
}
|
||||||
|
val results = parseSearchResults(root)
|
||||||
|
|
||||||
|
|
||||||
|
println(results)
|
||||||
|
return results
|
||||||
|
// val searchResult = NodeToolText.findNodeByText(getRootInActiveWindow(), "查询结果")
|
||||||
|
// 写入CSV文件
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 在 SearchCompanyForm 类中修改 writeResultsToCsv 方法
|
||||||
|
private fun writeResultsToCsv(results: List<CompanyInfo>) {
|
||||||
|
val csvTool = CsvTool()
|
||||||
|
|
||||||
|
// 生成包含时间戳的文件名
|
||||||
|
val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss_SSS", Locale.getDefault()).format(Date())
|
||||||
|
val fileName = "company_results_$timeStamp.csv"
|
||||||
|
|
||||||
|
// 获取存储路径
|
||||||
|
val filePath = StorageTool.getStorageFilePath(fileName)
|
||||||
|
|
||||||
|
// 定义表头
|
||||||
|
val headers = listOf("搜索公司名称","建档",
|
||||||
|
"公司名称", "公司ID", "完整地址", "省份", "城市",
|
||||||
|
"区域", "街道", "详细地址", "客户类型", "客户状态", "客户经理"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 写入CSV文件
|
||||||
|
csvTool.writeToFile(
|
||||||
|
data = results,
|
||||||
|
filePath = filePath,
|
||||||
|
headers = headers
|
||||||
|
) { companyInfo ->
|
||||||
|
listOf(
|
||||||
|
companyInfo.searchName,
|
||||||
|
companyInfo.isArchived,
|
||||||
|
companyInfo.name,
|
||||||
|
companyInfo.companyId,
|
||||||
|
companyInfo.address,
|
||||||
|
companyInfo.addressInfo.province,
|
||||||
|
companyInfo.addressInfo.city,
|
||||||
|
companyInfo.addressInfo.district,
|
||||||
|
companyInfo.addressInfo.street,
|
||||||
|
companyInfo.addressInfo.detail,
|
||||||
|
companyInfo.customerType,
|
||||||
|
companyInfo.customerStatus,
|
||||||
|
companyInfo.manager
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
println("CSV文件已保存至: $filePath")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fun parseSearchResults(root: AccessibilityNodeInfo): List<CompanyInfo> {
|
||||||
|
val results = ArrayList<CompanyInfo>()
|
||||||
|
|
||||||
|
// 查找所有包含公司信息的容器节点
|
||||||
|
// 根据日志分析,每个结果项都是一个 android.view.View 容器
|
||||||
|
|
||||||
|
// 这里需要根据实际UI结构调整查找逻辑
|
||||||
|
val resultContainers = findAllResultContainers(root)
|
||||||
|
|
||||||
|
for (container in resultContainers) {
|
||||||
|
val (companyName, companyId) = extractCompanyNameAndId(extractChildText(container, 0))
|
||||||
|
val address = extractChildText(container, 2)
|
||||||
|
val companyInfo = CompanyInfo(
|
||||||
|
searchName = "",
|
||||||
|
isArchived = "X",
|
||||||
|
name = companyName,
|
||||||
|
companyId= companyId,
|
||||||
|
address = address,
|
||||||
|
addressInfo = parseAddress(address),
|
||||||
|
customerType = extractChildText(container, 3),
|
||||||
|
customerStatus = extractChildText(container, 4),
|
||||||
|
manager = extractMangerName(extractChildText(container, 5)),
|
||||||
|
)
|
||||||
|
if(companyInfo.name.isEmpty()){
|
||||||
|
println()
|
||||||
|
println("未找到公司名称:"+ companyInfo)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
results.add(companyInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun extractCompanyNameAndId(text: String): Pair<String, String> {
|
||||||
|
if (text.isEmpty()) return Pair("", "")
|
||||||
|
|
||||||
|
// 使用正则表达式匹配公司名称和ID
|
||||||
|
val regex = "(.+)\\((\\d+)\\)".toRegex()
|
||||||
|
val matchResult = regex.find(text)
|
||||||
|
|
||||||
|
return if (matchResult != null) {
|
||||||
|
val companyName = matchResult.groupValues[1].trim()
|
||||||
|
val companyId = matchResult.groupValues[2].trim()
|
||||||
|
Pair(companyName, companyId)
|
||||||
|
} else {
|
||||||
|
println("未匹配到公司名称和ID: $text")
|
||||||
|
Pair("", "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun extractMangerName(text: String): String {
|
||||||
|
if (text.isEmpty()) return ""
|
||||||
|
|
||||||
|
// 使用正则表达式提取"归属客户经理:"后的姓名
|
||||||
|
val regex = "归属客户经理:(.+)".toRegex()
|
||||||
|
val matchResult = regex.find(text)
|
||||||
|
|
||||||
|
return if (matchResult != null) {
|
||||||
|
matchResult.groupValues[1].trim()
|
||||||
|
} else {
|
||||||
|
println("未匹配到客户经理信息: $text")
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class CompanyInfo(
|
||||||
|
var searchName: String,
|
||||||
|
// 是否建档
|
||||||
|
var isArchived: String,
|
||||||
|
val name: String,
|
||||||
|
val companyId: String,
|
||||||
|
val address: String,
|
||||||
|
val addressInfo: AddressInfo,
|
||||||
|
val customerType: String,
|
||||||
|
val customerStatus: String,
|
||||||
|
val manager: String
|
||||||
|
)
|
||||||
|
|
||||||
|
private fun parseAddress(address: String): AddressInfo {
|
||||||
|
if (address.isEmpty()) return AddressInfo("", "", "", "", "")
|
||||||
|
|
||||||
|
// 按 "@" 分割地址
|
||||||
|
val parts = address.split("@")
|
||||||
|
|
||||||
|
return when (parts.size) {
|
||||||
|
5 -> {
|
||||||
|
// 完整格式: 省@市@区@街道@详细地址
|
||||||
|
AddressInfo(
|
||||||
|
province = parts[0],
|
||||||
|
city = parts[1],
|
||||||
|
district = parts[2],
|
||||||
|
street = parts[3],
|
||||||
|
detail = parts[4]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
in 1..4 -> {
|
||||||
|
// 不完整格式处理
|
||||||
|
println("地址格式不完整: $address")
|
||||||
|
AddressInfo(
|
||||||
|
province = if (parts.size > 0) parts[0] else "",
|
||||||
|
city = if (parts.size > 1) parts[1] else "",
|
||||||
|
district = if (parts.size > 2) parts[2] else "",
|
||||||
|
street = if (parts.size > 3) parts[3] else "",
|
||||||
|
detail = ""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
// 超过5个部分的情况
|
||||||
|
println("地址格式异常: $address")
|
||||||
|
AddressInfo("", "", "", "", "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class AddressInfo(
|
||||||
|
val province: String,
|
||||||
|
val city: String,
|
||||||
|
val district: String,
|
||||||
|
val street: String,
|
||||||
|
val detail: String
|
||||||
|
)
|
||||||
|
|
||||||
|
// 需要实现的具体解析辅助方法
|
||||||
|
private fun findAllResultContainers(root: AccessibilityNodeInfo): List<AccessibilityNodeInfo> {
|
||||||
|
// 实现查找所有结果容器的逻辑
|
||||||
|
// 可以根据特定的布局特征识别结果项
|
||||||
|
//
|
||||||
|
val searchBtn = NodeToolText.findNodeByText(root, "搜索")
|
||||||
|
val endNode = NodeToolText.findNodeByText(root,"没有更多了")
|
||||||
|
// if (node == null || node.parent == null) return null
|
||||||
|
|
||||||
|
val parent = searchBtn?.parent
|
||||||
|
if (parent == null) return emptyList()
|
||||||
|
|
||||||
|
val childCount = parent.childCount
|
||||||
|
var found = false
|
||||||
|
val list = ArrayList<AccessibilityNodeInfo>()
|
||||||
|
for (i in 0 until childCount) {
|
||||||
|
val child = parent.getChild(i)
|
||||||
|
if (found && child != null) {
|
||||||
|
list.add(child)
|
||||||
|
}
|
||||||
|
if (child == searchBtn) {
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
if(child == endNode){
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return list // 没有找到兄弟节点
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun extractChildText(container: AccessibilityNodeInfo, idx: Int): String {
|
||||||
|
// 移除重复定义的idx变量
|
||||||
|
if(container.childCount >= idx+1){
|
||||||
|
val child = container.getChild(idx) // 先获取子节点
|
||||||
|
return child?.text?.toString() ?: "" // 对子节点进行空值检查
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,33 +8,29 @@ import android.os.Build
|
|||||||
import android.view.accessibility.AccessibilityEvent
|
import android.view.accessibility.AccessibilityEvent
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import com.loveerror.bested.MyApplication
|
||||||
import com.loveerror.bested.SelectAccessibility
|
import com.loveerror.bested.SelectAccessibility
|
||||||
import com.loveerror.bested.UIInspectorService
|
|
||||||
import com.loveerror.bested.button.ActionEvent
|
import com.loveerror.bested.button.ActionEvent
|
||||||
|
import com.loveerror.bested.button.DragFloatingButton
|
||||||
import com.loveerror.bested.tool.AccessibilityTool
|
import com.loveerror.bested.tool.AccessibilityTool
|
||||||
import com.loveerror.bested.tool.NodeToolText
|
import com.loveerror.bested.tool.NodeToolText
|
||||||
|
import com.loveerror.bested.tool.RootNodeCallback
|
||||||
|
|
||||||
|
|
||||||
class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) {
|
||||||
private lateinit var selectAccessibility: SelectAccessibility
|
private lateinit var selectAccessibility: SelectAccessibility
|
||||||
private var broadcastReceiver: BroadcastReceiver? = null
|
private var broadcastReceiver: BroadcastReceiver? = null
|
||||||
|
|
||||||
fun initialize(context: Context) {
|
fun initialize(context: Context) {
|
||||||
|
|
||||||
val listOfActionEvent = listOf(
|
val listOfActionEvent = ActionEvent.entries.filter { it.enable }
|
||||||
ActionEvent.START_ACTION,
|
|
||||||
ActionEvent.FILL_ACTION,
|
|
||||||
// ActionEvent.SET_DATA_SOURCE,
|
|
||||||
// ActionEvent.HIDE_FLOATING_BUTTON,
|
|
||||||
ActionEvent.PRINT_CURRENT_PAGE
|
|
||||||
)
|
|
||||||
// 注册广播接收器
|
// 注册广播接收器
|
||||||
broadcastReceiver = object : BroadcastReceiver() {
|
broadcastReceiver = object : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
|
||||||
when (intent.action) {
|
when (intent.action) {
|
||||||
ActionEvent.START_ACTION.event -> {
|
ActionEvent.START_ACTION.event -> {
|
||||||
startJobAsync()
|
startJobAsync(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionEvent.FILL_ACTION.event -> {
|
ActionEvent.FILL_ACTION.event -> {
|
||||||
@@ -42,7 +38,26 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ActionEvent.PRINT_CURRENT_PAGE.event -> {
|
ActionEvent.PRINT_CURRENT_PAGE.event -> {
|
||||||
AccessibilityTool.printViewTree(uiInspectorService.rootInActiveWindow)
|
AccessibilityTool.printViewTree(rootNodeCallback.getRootNodeReceived())
|
||||||
|
}
|
||||||
|
|
||||||
|
ActionEvent.QUERY_COMPANY_REGISTER.event -> {
|
||||||
|
|
||||||
|
|
||||||
|
val stateMachine = ZJMCCMCRMStateMachine(rootNodeCallback)
|
||||||
|
|
||||||
|
stateMachine.navigateToSearchCompanyPage(intent)
|
||||||
|
// if (companyName != null) {
|
||||||
|
// val queryCompanyRegister = QueryCompanyRegister(uiInspectorService)
|
||||||
|
// queryCompanyRegister.queryCompanyRegister(companyName)
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
ActionEvent.QUERY_COMPANY_SEARCH_ACTION.event -> {
|
||||||
|
// 通过全局管理器获取
|
||||||
|
val floatingButton = MyApplication.getInstance().getFloatingButton(context)
|
||||||
|
|
||||||
|
searchCompanyActionAsync(intent,floatingButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
@@ -52,6 +67,8 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -60,7 +77,7 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
registerReceiver(filter, context)
|
registerReceiver(filter, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
selectAccessibility = SelectAccessibility(uiInspectorService)
|
selectAccessibility = SelectAccessibility(rootNodeCallback)
|
||||||
|
|
||||||
// selectAccessibility.handleSelectPopup(event)
|
// selectAccessibility.handleSelectPopup(event)
|
||||||
|
|
||||||
@@ -94,14 +111,25 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
if (root == null) {
|
if (root == null) {
|
||||||
return@Thread
|
return@Thread
|
||||||
}
|
}
|
||||||
var normalGroupCreateForm = NormalGroupCreateForm(uiInspectorService)
|
val normalGroupCreateForm = NormalGroupCreateForm(rootNodeCallback)
|
||||||
normalGroupCreateForm.autoFillForm(root)
|
normalGroupCreateForm.autoFillForm(root)
|
||||||
}.start()
|
}.start()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun searchCompanyActionAsync(intent: Intent, floatingButton: DragFloatingButton) {
|
||||||
|
Thread {
|
||||||
|
val root = rootInActiveWindow()
|
||||||
|
if (root == null) {
|
||||||
|
return@Thread
|
||||||
|
}
|
||||||
|
val searchCompanyForm = SearchCompanyForm(rootNodeCallback,floatingButton)
|
||||||
|
searchCompanyForm.autoFillForm(root, intent)
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
fun someOptEvent(event: AccessibilityEvent?){
|
fun someOptEvent(event: AccessibilityEvent?){
|
||||||
// 获取根节点
|
// 获取根节点
|
||||||
val root = uiInspectorService.rootInActiveWindow
|
val root = rootNodeCallback.getRootNodeReceived()
|
||||||
if (root != null) {
|
if (root != null) {
|
||||||
|
|
||||||
val editText = AccessibilityTool.findEditTextAfterLabel(root, "集团名称")
|
val editText = AccessibilityTool.findEditTextAfterLabel(root, "集团名称")
|
||||||
@@ -115,10 +143,10 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startJobAsync() {
|
private fun startJobAsync(intent: Intent) {
|
||||||
|
|
||||||
val stateMachine = ZJMCCMCRMStateMachine(uiInspectorService)
|
val stateMachine = ZJMCCMCRMStateMachine(rootNodeCallback)
|
||||||
stateMachine.navigateToNormalGroupCreatePage()
|
stateMachine.navigateToNormalGroupCreatePage(intent)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +163,7 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
private var lastViewTreeHash: Int = 0
|
private var lastViewTreeHash: Int = 0
|
||||||
|
|
||||||
private fun rootInActiveWindow(): AccessibilityNodeInfo? {
|
private fun rootInActiveWindow(): AccessibilityNodeInfo? {
|
||||||
val root = uiInspectorService.rootInActiveWindow
|
val root = rootNodeCallback.getRootNodeReceived()
|
||||||
return root
|
return root
|
||||||
}
|
}
|
||||||
private fun handleContentChange() {
|
private fun handleContentChange() {
|
||||||
@@ -217,6 +245,10 @@ class ZjMccmCrm(private val uiInspectorService: UIInspectorService) {
|
|||||||
return NodeToolText.hasNodeWithText(root,"普通建档","集团状态","证件名称")
|
return NodeToolText.hasNodeWithText(root,"普通建档","集团状态","证件名称")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isCompanySearchPage(root: AccessibilityNodeInfo): Boolean {
|
||||||
|
return NodeToolText.hasNodeWithText(root,"全网查询","搜索")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,23 @@
|
|||||||
package com.loveerror.bested.handler
|
package com.loveerror.bested.handler
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
import com.loveerror.bested.UIInspectorService
|
|
||||||
import com.loveerror.bested.tool.AccessibilityTool
|
import com.loveerror.bested.tool.AccessibilityTool
|
||||||
|
import com.loveerror.bested.tool.RootNodeCallback
|
||||||
|
|
||||||
class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService) {
|
class ZJMCCMCRMStateMachine(private val rootNodeCallback: RootNodeCallback) {
|
||||||
private var currentState: ZJMCCMCRMState = ZJMCCMCRMState.UNKNOWN
|
private var currentState: ZJMCCMCRMState = ZJMCCMCRMState.UNKNOWN
|
||||||
private var targetState: ZJMCCMCRMState = ZJMCCMCRMState.UNKNOWN
|
private var targetState: ZJMCCMCRMState = ZJMCCMCRMState.UNKNOWN
|
||||||
private val zjMccmCrm = ZjMccmCrm(uiInspectorService)
|
private val zjMccmCrm = ZjMccmCrm(rootNodeCallback)
|
||||||
|
|
||||||
fun navigateToNormalGroupCreatePage() {
|
fun navigateToNormalGroupCreatePage(intent: Intent) {
|
||||||
targetState = ZJMCCMCRMState.NORMAL_GROUP_CREATE_PAGE
|
targetState = ZJMCCMCRMState.NORMAL_GROUP_CREATE_PAGE
|
||||||
executeWorkflow()
|
executeWorkflow(intent)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun navigateToSearchCompanyPage(intent: Intent) {
|
||||||
|
targetState = ZJMCCMCRMState.SEARCH_COMPANY_PAGE
|
||||||
|
executeWorkflow(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定义状态转换映射
|
// 定义状态转换映射
|
||||||
@@ -19,18 +25,20 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
Pair(ZJMCCMCRMState.HOME_PAGE, ZJMCCMCRMState.GROUP_ALL_APPS_LIST) to ::handleHomePageToGroupAllAppsList,
|
Pair(ZJMCCMCRMState.HOME_PAGE, ZJMCCMCRMState.GROUP_ALL_APPS_LIST) to ::handleHomePageToGroupAllAppsList,
|
||||||
Pair(ZJMCCMCRMState.GROUP_ALL_APPS_LIST, ZJMCCMCRMState.GROUP_CREATE_SELECT_PAGE) to ::handleAllAppsListToGroupCreateSelectPage,
|
Pair(ZJMCCMCRMState.GROUP_ALL_APPS_LIST, ZJMCCMCRMState.GROUP_CREATE_SELECT_PAGE) to ::handleAllAppsListToGroupCreateSelectPage,
|
||||||
Pair(ZJMCCMCRMState.GROUP_CREATE_SELECT_PAGE, ZJMCCMCRMState.NORMAL_GROUP_CREATE_PAGE) to ::handleGroupCreateSelectPageToNormalGroupCreatePage,
|
Pair(ZJMCCMCRMState.GROUP_CREATE_SELECT_PAGE, ZJMCCMCRMState.NORMAL_GROUP_CREATE_PAGE) to ::handleGroupCreateSelectPageToNormalGroupCreatePage,
|
||||||
Pair(ZJMCCMCRMState.HOME_PAGE, ZJMCCMCRMState.SEARCH_COMPANY_PAGE) to ::handleHomePageToSearchCompanyPage
|
// Pair(ZJMCCMCRMState.HOME_PAGE, ZJMCCMCRMState.GROUP_ALL_APPS_LIST) to ::handleHomePageToSearchCompanyPage,
|
||||||
)
|
Pair(ZJMCCMCRMState.GROUP_ALL_APPS_LIST, ZJMCCMCRMState.SEARCH_COMPANY_PAGE) to ::handleAllAppsListToSearchCompanyPage,
|
||||||
private fun executeWorkflow() {
|
|
||||||
|
)
|
||||||
|
private fun executeWorkflow(intent : Intent?) {
|
||||||
|
|
||||||
Thread {
|
Thread {
|
||||||
executeWorkflowInner()
|
executeWorkflowInner(intent)
|
||||||
return@Thread
|
return@Thread
|
||||||
|
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun executeWorkflowInner() {
|
private fun executeWorkflowInner(intent: Intent?) {
|
||||||
val root = getRootInActiveWindow()
|
val root = getRootInActiveWindow()
|
||||||
|
|
||||||
if (root == null) {
|
if (root == null) {
|
||||||
@@ -43,9 +51,14 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
|
|
||||||
// 更新当前状态
|
// 更新当前状态
|
||||||
updateState(root)
|
updateState(root)
|
||||||
|
|
||||||
|
var count = 100
|
||||||
// &&
|
// &&
|
||||||
while (targetState != ZJMCCMCRMState.UNKNOWN && currentState != targetState) {
|
while (targetState != ZJMCCMCRMState.UNKNOWN && currentState != targetState) {
|
||||||
|
count--
|
||||||
|
if(count <= 0){
|
||||||
|
println("无法从当前状态导航到目标状态")
|
||||||
|
break }
|
||||||
// 检查是否可以导航到目标状态
|
// 检查是否可以导航到目标状态
|
||||||
if (!canNavigateToTarget()) {
|
if (!canNavigateToTarget()) {
|
||||||
println("无法从当前状态导航到目标状态")
|
println("无法从当前状态导航到目标状态")
|
||||||
@@ -72,8 +85,11 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
// 使用状态映射执行相应动作
|
// 使用状态映射执行相应动作
|
||||||
val transitionHandler = stateTransitionMap[Pair(currentState, nextState)]
|
val transitionHandler = stateTransitionMap[Pair(currentState, nextState)]
|
||||||
if (transitionHandler != null) {
|
if (transitionHandler != null) {
|
||||||
transitionHandler.invoke(root)
|
transitionHandler.invoke(root,intent)
|
||||||
currentState = nextState
|
currentState = nextState
|
||||||
|
}else{
|
||||||
|
println("无法从当前状态导航到目标状态")
|
||||||
|
break
|
||||||
}
|
}
|
||||||
updateState(root)
|
updateState(root)
|
||||||
|
|
||||||
@@ -81,7 +97,7 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getRootInActiveWindow(): AccessibilityNodeInfo? {
|
private fun getRootInActiveWindow(): AccessibilityNodeInfo? {
|
||||||
return uiInspectorService.rootInActiveWindow
|
return rootNodeCallback.getRootNodeReceived()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -93,6 +109,10 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
// 从任何状态都可以导航到 NORMAL_GROUP_CREATE_PAGE
|
// 从任何状态都可以导航到 NORMAL_GROUP_CREATE_PAGE
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
ZJMCCMCRMState.SEARCH_COMPANY_PAGE -> {
|
||||||
|
// 从任何状态都可以导航到 SEARCH_COMPANY_PAGE
|
||||||
|
true
|
||||||
|
}
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,6 +128,14 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
else -> ZJMCCMCRMState.UNKNOWN
|
else -> ZJMCCMCRMState.UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ZJMCCMCRMState.SEARCH_COMPANY_PAGE -> {
|
||||||
|
// 确定到达目标状态的下一个必要步骤
|
||||||
|
when (currentState) {
|
||||||
|
ZJMCCMCRMState.HOME_PAGE -> ZJMCCMCRMState.GROUP_ALL_APPS_LIST
|
||||||
|
ZJMCCMCRMState.GROUP_ALL_APPS_LIST -> ZJMCCMCRMState.SEARCH_COMPANY_PAGE
|
||||||
|
else -> ZJMCCMCRMState.UNKNOWN
|
||||||
|
}
|
||||||
|
}
|
||||||
else -> ZJMCCMCRMState.UNKNOWN
|
else -> ZJMCCMCRMState.UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,26 +147,30 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
zjMccmCrm.isGroupAllAppsList(root) -> ZJMCCMCRMState.GROUP_ALL_APPS_LIST
|
zjMccmCrm.isGroupAllAppsList(root) -> ZJMCCMCRMState.GROUP_ALL_APPS_LIST
|
||||||
zjMccmCrm.isGroupCreateSelectPage(root) -> ZJMCCMCRMState.GROUP_CREATE_SELECT_PAGE
|
zjMccmCrm.isGroupCreateSelectPage(root) -> ZJMCCMCRMState.GROUP_CREATE_SELECT_PAGE
|
||||||
zjMccmCrm.isNormalGroupCreatePage(root) -> ZJMCCMCRMState.NORMAL_GROUP_CREATE_PAGE
|
zjMccmCrm.isNormalGroupCreatePage(root) -> ZJMCCMCRMState.NORMAL_GROUP_CREATE_PAGE
|
||||||
|
zjMccmCrm.isCompanySearchPage(root) -> ZJMCCMCRMState.SEARCH_COMPANY_PAGE
|
||||||
else -> ZJMCCMCRMState.UNKNOWN
|
else -> ZJMCCMCRMState.UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleHomePageToGroupAllAppsList(root: AccessibilityNodeInfo) {
|
private fun handleHomePageToGroupAllAppsList(root: AccessibilityNodeInfo,intent: Intent?) {
|
||||||
AccessibilityTool.printViewTree(root)
|
AccessibilityTool.printViewTree(root)
|
||||||
AccessibilityTool.clickButtonByText(root, "常用功能", "全部")
|
AccessibilityTool.clickButtonByText(root, "常用功能", "全部")
|
||||||
println("常用功能 全部 clicked")
|
println("常用功能 全部 clicked")
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleAllAppsListToGroupCreateSelectPage(root: AccessibilityNodeInfo) {
|
private fun handleAllAppsListToGroupCreateSelectPage(root: AccessibilityNodeInfo,intent: Intent?) {
|
||||||
AccessibilityTool.printViewTree(root)
|
AccessibilityTool.printViewTree(root)
|
||||||
val updatedRoot = uiInspectorService.rootInActiveWindow
|
val updatedRoot = rootNodeCallback.getRootNodeReceived()
|
||||||
|
if(updatedRoot== null){
|
||||||
|
return
|
||||||
|
}
|
||||||
AccessibilityTool.clickButtonByText(updatedRoot, "集团新建")
|
AccessibilityTool.clickButtonByText(updatedRoot, "集团新建")
|
||||||
|
|
||||||
Thread.sleep(10 * 1000)
|
Thread.sleep(10 * 1000)
|
||||||
|
|
||||||
}
|
}
|
||||||
private fun handleGroupCreateSelectPageToNormalGroupCreatePage(root: AccessibilityNodeInfo) {
|
private fun handleGroupCreateSelectPageToNormalGroupCreatePage(root: AccessibilityNodeInfo,intent: Intent?) {
|
||||||
AccessibilityTool.printViewTree(root, "before普通建档")
|
AccessibilityTool.printViewTree(root, "before普通建档")
|
||||||
AccessibilityTool.clickButtonByText(root, "普通建档")
|
AccessibilityTool.clickButtonByText(root, "普通建档")
|
||||||
Thread.sleep(15 * 1000)
|
Thread.sleep(15 * 1000)
|
||||||
@@ -146,7 +178,13 @@ class ZJMCCMCRMStateMachine(private val uiInspectorService: UIInspectorService)
|
|||||||
AccessibilityTool.printViewTree(root, "after普通建档")
|
AccessibilityTool.printViewTree(root, "after普通建档")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleHomePageToSearchCompanyPage(root: AccessibilityNodeInfo) {
|
private fun handleAllAppsListToSearchCompanyPage(root: AccessibilityNodeInfo,intent: Intent?) {
|
||||||
|
// val companyName = intent?.getStringExtra("textInput")
|
||||||
|
// if (companyName == null) {
|
||||||
|
// println("companyName is null")
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
|
||||||
AccessibilityTool.printViewTree(root)
|
AccessibilityTool.printViewTree(root)
|
||||||
AccessibilityTool.clickButtonByText(root, "全网查询")
|
AccessibilityTool.clickButtonByText(root, "全网查询")
|
||||||
println("全网查询 clicked")
|
println("全网查询 clicked")
|
||||||
|
|||||||
@@ -8,6 +8,259 @@ import android.view.accessibility.AccessibilityNodeInfo
|
|||||||
class AccessibilityTool {
|
class AccessibilityTool {
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
fun fillEditTextByHintText(root: AccessibilityNodeInfo, value: String, fieldName : String, hintText: String) {
|
||||||
|
val editTextNode = NodeToolHint.findNodeByHint(root, hintText)
|
||||||
|
fillEditText(editTextNode,value,fieldName)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun fillEditText(editText: AccessibilityNodeInfo?, value: String, fieldName : String) {
|
||||||
|
if (editText == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (editText.isEditable) {
|
||||||
|
AccessibilityTool.inputText(editText, value)
|
||||||
|
println("已填写$fieldName: $value")
|
||||||
|
} else {
|
||||||
|
println("未找到${fieldName}输入框或输入框不可编辑")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun performBottomSearchSelection(
|
||||||
|
rootNodeCallback: RootNodeCallback,
|
||||||
|
fieldName: String,
|
||||||
|
hintText: String ,
|
||||||
|
searchWord: String,
|
||||||
|
){
|
||||||
|
try {
|
||||||
|
// 1. 点击触发元素打开搜索对话框
|
||||||
|
AccessibilityTool.clickToOpenBottomSheet(rootNodeCallback.getRootNodeReceived(), fieldName)
|
||||||
|
|
||||||
|
// 2. 等待对话框完全显示
|
||||||
|
Thread.sleep(1000)
|
||||||
|
|
||||||
|
// 3. 获取更新后的根节点
|
||||||
|
val newRoot = rootNodeCallback.getRootNodeReceived()
|
||||||
|
|
||||||
|
if (newRoot == null){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 4. 查找搜索输入框
|
||||||
|
val searchEditText = NodeToolHint.findNodeByHint(newRoot, hintText)
|
||||||
|
if (searchEditText != null && searchEditText.isEditable) {
|
||||||
|
// 5. 输入搜索关键词
|
||||||
|
AccessibilityTool.inputText(searchEditText, searchWord)
|
||||||
|
println("已在搜索框中输入: $searchWord")
|
||||||
|
AccessibilityTool.performSearchEnter(searchEditText)
|
||||||
|
// 6. 等待搜索结果加载
|
||||||
|
Thread.sleep(5000)
|
||||||
|
|
||||||
|
// 7. 选择第一个搜索结果(如果有)
|
||||||
|
selectFirstSearchResult(rootNodeCallback)
|
||||||
|
} else {
|
||||||
|
println("未找到搜索输入框或输入框不可编辑")
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
println("搜索选择操作失败: ${e.message}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun findClickableSearchResult(root: AccessibilityNodeInfo): AccessibilityNodeInfo? {
|
||||||
|
// 遍历查找可点击的搜索结果项
|
||||||
|
// 这里可以根据具体的UI结构进行调整
|
||||||
|
return NodeToolText.findNodeByText(root, "金牛座") // 示例匹配
|
||||||
|
}
|
||||||
|
private fun selectFirstSearchResult(rootNodeCallback: RootNodeCallback) {
|
||||||
|
|
||||||
|
val root = rootNodeCallback.getRootNodeReceived()
|
||||||
|
if(root == null){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 查找可点击的搜索结果项
|
||||||
|
// 根据UI树,搜索结果可能在 "没有更多了..." 之前
|
||||||
|
val searchResult = findClickableSearchResult(root)
|
||||||
|
if (searchResult != null && searchResult.isClickable) {
|
||||||
|
AccessibilityTool.ensureNodeVisible(searchResult)
|
||||||
|
AccessibilityTool.performClick(searchResult)
|
||||||
|
println("已选择第一个搜索结果")
|
||||||
|
|
||||||
|
// 点击确认按钮
|
||||||
|
Thread.sleep(500)
|
||||||
|
val confirmButton = NodeToolText.findNodeByText(root, "确认")
|
||||||
|
?: NodeToolText.findNodeByText(root, "确定")
|
||||||
|
if (confirmButton?.isClickable == true) {
|
||||||
|
AccessibilityTool.performClick(confirmButton)
|
||||||
|
println("已点击确认按钮")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println("未找到可点击的搜索结果")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun performBottomTimeSelection(
|
||||||
|
rootNodeCallback: RootNodeCallback,
|
||||||
|
fieldName: String,
|
||||||
|
date: String,
|
||||||
|
) {
|
||||||
|
|
||||||
|
// 校验格式是否为日期格式
|
||||||
|
if (!date.matches(Regex("\\d{4}-\\d{2}-\\d{2}"))) {
|
||||||
|
throw IllegalArgumentException("Invalid date format. Please provide a date in the format YYYY-MM-DD.")
|
||||||
|
}
|
||||||
|
// 解析出年、月、日
|
||||||
|
val (year, month, day) = date.split("-")
|
||||||
|
|
||||||
|
// 1. 点击触发元素打开底部对话框
|
||||||
|
clickToOpenBottomSheet(rootNodeCallback.getRootNodeReceived(), fieldName)
|
||||||
|
|
||||||
|
// 2. 等待对话框完全显示
|
||||||
|
Thread.sleep(1000)
|
||||||
|
|
||||||
|
NodeToolTime.selectDateWithRetry(rootNodeCallback, year, month, day)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun normalizeExpiryDate(dateString: String, defaultValue: String="2090-11-23", maxValue: String="2090-11-23"): String {
|
||||||
|
// 如果不是日期格式,返回默认值
|
||||||
|
if (!dateString.matches(Regex("\\d{4}-\\d{2}-\\d{2}"))) {
|
||||||
|
return defaultValue // 默认值
|
||||||
|
}
|
||||||
|
|
||||||
|
// 比较日期是否大于最大值
|
||||||
|
val inputDate = dateString.replace("-", "").toIntOrNull() ?: 0
|
||||||
|
val maxDateValue = maxValue.replace("-", "").toIntOrNull() ?: 20901123
|
||||||
|
|
||||||
|
return if (inputDate > maxDateValue) {
|
||||||
|
maxValue // 限制最大值
|
||||||
|
} else {
|
||||||
|
dateString // 保持原值
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun performBottomSheetSelection(rootNodeCallback: RootNodeCallback, triggerText: String, optionText: String) {
|
||||||
|
val root = rootNodeCallback.getRootNodeReceived()
|
||||||
|
if(root == null){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 1. 点击触发元素打开底部对话框
|
||||||
|
clickToOpenBottomSheet(root, triggerText)
|
||||||
|
|
||||||
|
// 2. 等待对话框完全显示
|
||||||
|
Thread.sleep(1000)
|
||||||
|
|
||||||
|
// 3. 选择目标选项
|
||||||
|
selectOptionFromBottomSheet(rootNodeCallback,optionText)
|
||||||
|
|
||||||
|
// 4. 明确点击确认按钮 dubbo check
|
||||||
|
clickConfirmButton(rootNodeCallback)
|
||||||
|
Thread.sleep(500) // 等待确认操作完成
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击可点击的触发元素来显示底部选择对话框
|
||||||
|
fun clickToOpenBottomSheet(root: AccessibilityNodeInfo?, triggerText: String) {
|
||||||
|
if (root == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val triggerNode = NodeToolText.findNodeByText(root, triggerText)
|
||||||
|
if (triggerNode != null && triggerNode.isClickable) {
|
||||||
|
AccessibilityTool.ensureNodeVisible(triggerNode)
|
||||||
|
AccessibilityTool.performClick(triggerNode)
|
||||||
|
Thread.sleep(1000) // 等待对话框弹出
|
||||||
|
}else{
|
||||||
|
|
||||||
|
var parent = triggerNode?.parent
|
||||||
|
while (parent != null) {
|
||||||
|
if (parent.isClickable) {
|
||||||
|
AccessibilityTool.ensureNodeVisible(parent)
|
||||||
|
AccessibilityTool.performClick(parent)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parent = parent.parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在底部对话框中选择指定选项
|
||||||
|
fun selectOptionFromBottomSheet(rootNodeCallback: RootNodeCallback,optionText: String, confirm: Boolean = true) {
|
||||||
|
// 获取更新后的根节点
|
||||||
|
val newRoot = rootNodeCallback.getRootNodeReceived()
|
||||||
|
if (newRoot == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找并点击选项
|
||||||
|
val optionNode = NodeToolText.findNodeByText(newRoot, optionText)
|
||||||
|
if (optionNode != null) {
|
||||||
|
AccessibilityTool.ensureNodeVisible(optionNode)
|
||||||
|
if (optionNode.isClickable) {
|
||||||
|
AccessibilityTool.performClick(optionNode)
|
||||||
|
println("已选择底部选项: $optionText")
|
||||||
|
|
||||||
|
// 根据需要点击确认或取消按钮
|
||||||
|
if (confirm) {
|
||||||
|
clickConfirmButton(rootNodeCallback)
|
||||||
|
} else {
|
||||||
|
clickCancelButton(newRoot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println("未找到底部选项: $optionText")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 点击确认按钮
|
||||||
|
private fun clickConfirmButton(rootNodeCallback: RootNodeCallback): Boolean {
|
||||||
|
val root = rootNodeCallback.getRootNodeReceived()
|
||||||
|
if (root == null) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
val confirmButton = NodeToolText.findNodeByText(root, "确定")
|
||||||
|
?: NodeToolText.findNodeByText(root, "确认")
|
||||||
|
|
||||||
|
println("查找确认按钮: ${confirmButton != null}")
|
||||||
|
if (confirmButton != null) {
|
||||||
|
println("确认按钮属性 - clickable: ${confirmButton.isClickable}, visibleToUser: ${confirmButton.isVisibleToUser}")
|
||||||
|
if (confirmButton.isClickable) {
|
||||||
|
AccessibilityTool.ensureNodeVisible(confirmButton)
|
||||||
|
AccessibilityTool.performClick(confirmButton)
|
||||||
|
println("已点击确认按钮")
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
println("确认按钮不可点击")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println("未找到确认按钮")
|
||||||
|
// 打印当前界面树以便调试
|
||||||
|
AccessibilityTool.printViewTree(root, "确认按钮未找到时的界面树")
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击取消按钮
|
||||||
|
private fun clickCancelButton(root: AccessibilityNodeInfo) {
|
||||||
|
val cancelButton = NodeToolText.findNodeByText(root, "取消")
|
||||||
|
if (cancelButton != null && cancelButton.isClickable) {
|
||||||
|
AccessibilityTool.performClick(cancelButton)
|
||||||
|
println("已点击取消按钮")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun expandClassificationSection(root: AccessibilityNodeInfo) {
|
||||||
|
val peopleCountNode = NodeToolText.findNodeByText(root, "请输入人数")
|
||||||
|
if (peopleCountNode == null) {
|
||||||
|
println("未找到员工数输入框")
|
||||||
|
val targetNode = NodeToolText.findNodeByText(root, "分类信息")
|
||||||
|
val nextSibling = NodeToolText.findNextSiblingNode(targetNode)
|
||||||
|
|
||||||
|
if (nextSibling != null && nextSibling.isClickable) {
|
||||||
|
AccessibilityTool.ensureNodeVisible(nextSibling)
|
||||||
|
AccessibilityTool.performClick(nextSibling)
|
||||||
|
Thread.sleep(2000)
|
||||||
|
println("已点击兄弟节点")
|
||||||
|
} else {
|
||||||
|
println("未找到可点击的兄弟节点")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
fun dismissPopupByClickingMask(root: AccessibilityNodeInfo?) {
|
fun dismissPopupByClickingMask(root: AccessibilityNodeInfo?) {
|
||||||
if (root == null) return
|
if (root == null) return
|
||||||
// 方法1: 查找最大的可点击背景视图
|
// 方法1: 查找最大的可点击背景视图
|
||||||
@@ -113,27 +366,32 @@ class AccessibilityTool {
|
|||||||
return false
|
return false
|
||||||
|
|
||||||
}
|
}
|
||||||
|
private fun imeEnter(searchEditText: AccessibilityNodeInfo): Boolean{
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
if(searchEditText.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_IME_ENTER.id)){
|
||||||
|
println("已通过 IME_ENTER 执行搜索")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
fun performSearchEnter(searchEditText: AccessibilityNodeInfo) {
|
fun performSearchEnter(searchEditText: AccessibilityNodeInfo) {
|
||||||
try {
|
try {
|
||||||
|
if(imeEnter(searchEditText)){
|
||||||
|
println("performSearchEnter 已通过 IME_ENTER 执行搜索")
|
||||||
|
return
|
||||||
|
}
|
||||||
// 方法1: 使用 ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE 发送回车
|
// 方法1: 使用 ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE 发送回车
|
||||||
val arguments = Bundle()
|
val arguments = Bundle()
|
||||||
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "\n")
|
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "\n")
|
||||||
if (searchEditText.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments)) {
|
if (searchEditText.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments)) {
|
||||||
println("已发送回车键执行搜索")
|
println("已发送回车键执行搜索")
|
||||||
return
|
return
|
||||||
|
} else {
|
||||||
|
println("通过 ACTION_SET_TEXT 发送回车失败")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 方法2: 如果上述方法失败,尝试使用 IME_ACTION
|
|
||||||
if (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
||||||
searchEditText.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_IME_ENTER.id)
|
|
||||||
} else {
|
|
||||||
TODO("VERSION.SDK_INT < R")
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
println("已通过 IME_ENTER 执行搜索")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
println("执行搜索操作失败: ${e.message}")
|
println("执行搜索操作失败: ${e.message}")
|
||||||
}
|
}
|
||||||
|
|||||||
62
app/src/main/java/com/loveerror/bested/tool/CsvTool.kt
Normal file
62
app/src/main/java/com/loveerror/bested/tool/CsvTool.kt
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
package com.loveerror.bested.tool
|
||||||
|
|
||||||
|
class CsvTool {
|
||||||
|
/**
|
||||||
|
* 将数据列表写入CSV文件
|
||||||
|
* @param data 数据列表
|
||||||
|
* @param filePath 文件路径
|
||||||
|
* @param headers 表头列表
|
||||||
|
* @param rowMapper 行映射函数,将每个对象转换为CSV行数据
|
||||||
|
*/
|
||||||
|
fun <T> writeToFile(
|
||||||
|
data: List<T>,
|
||||||
|
filePath: String,
|
||||||
|
headers: List<String>,
|
||||||
|
rowMapper: (T) -> List<String>
|
||||||
|
) {
|
||||||
|
if (data.isEmpty()) return
|
||||||
|
|
||||||
|
try {
|
||||||
|
java.io.FileWriter(filePath).use { writer ->
|
||||||
|
// 写入表头
|
||||||
|
writer.write(headers.joinToString(",") + "\n")
|
||||||
|
|
||||||
|
// 写入数据行
|
||||||
|
data.forEach { item ->
|
||||||
|
val row = rowMapper(item).joinToString(",") { escapeCsvField(it) }
|
||||||
|
writer.write(row + "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e: java.io.IOException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CSV字段转义处理
|
||||||
|
*/
|
||||||
|
private fun escapeCsvField(field: String): String {
|
||||||
|
return if (field.contains(",") || field.contains("\"") || field.contains("\n")) {
|
||||||
|
"\"" + field.replace("\"", "\"\"") + "\""
|
||||||
|
} else {
|
||||||
|
field
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* val csvTool = CsvTool()
|
||||||
|
* val persons = listOf(
|
||||||
|
* Person("张三", 25, "北京"),
|
||||||
|
* Person("李四", 30, "上海")
|
||||||
|
* )
|
||||||
|
*
|
||||||
|
* // 简单使用
|
||||||
|
* csvTool.writeToFile(
|
||||||
|
* data = persons,
|
||||||
|
* filePath = "persons.csv",
|
||||||
|
* headers = listOf("姓名", "年龄", "城市")
|
||||||
|
* ) { person ->
|
||||||
|
* listOf(person.name, person.age.toString(), person.city)
|
||||||
|
* }
|
||||||
|
*/
|
||||||
@@ -4,12 +4,15 @@ import android.view.accessibility.AccessibilityNodeInfo
|
|||||||
|
|
||||||
class NodeToolTime {
|
class NodeToolTime {
|
||||||
companion object {
|
companion object {
|
||||||
fun selectDateWithRetry(root: AccessibilityNodeInfo, year: String, month: String, day: String, getUpdatedRoot: () -> AccessibilityNodeInfo?, maxRetries: Int = 3): Boolean {
|
fun selectDateWithRetry(rootNodeCallback: RootNodeCallback?, year: String, month: String, day: String, maxRetries: Int = 3): Boolean {
|
||||||
|
if(rootNodeCallback == null)
|
||||||
|
return false
|
||||||
|
|
||||||
for (i in 0 until maxRetries) {
|
for (i in 0 until maxRetries) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (isTimePickerVisible(getUpdatedRoot())) {
|
if (isTimePickerVisible(rootNodeCallback.getRootNodeReceived())) {
|
||||||
selectDate(root, year, month, day,getUpdatedRoot)
|
selectDate(rootNodeCallback, year, month, day)
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
Thread.sleep(1000)
|
Thread.sleep(1000)
|
||||||
@@ -21,21 +24,23 @@ class NodeToolTime {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
fun selectDate(root: AccessibilityNodeInfo, year: String, month: String, day: String, getUpdatedRoot: () -> AccessibilityNodeInfo?) {
|
fun selectDate(rootNodeCallback: RootNodeCallback?, year: String, month: String, day: String) {
|
||||||
|
val root = rootNodeCallback?.getRootNodeReceived() ?: return
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 选择年份
|
// 选择年份
|
||||||
selectYear(root, year)
|
selectYear(root, year)
|
||||||
Thread.sleep(500) // 等待动画完成
|
Thread.sleep(500) // 等待动画完成
|
||||||
|
|
||||||
// 重新获取根节点以确保获取到更新后的UI树
|
// 重新获取根节点以确保获取到更新后的UI树
|
||||||
val updatedRoot = getUpdatedRoot() // 需要实现获取更新后根节点的方法
|
val updatedRoot = rootNodeCallback.getRootNodeReceived() // 需要实现获取更新后根节点的方法
|
||||||
|
|
||||||
// 选择月份
|
// 选择月份
|
||||||
selectMonth(updatedRoot ?: root, month)
|
selectMonth(updatedRoot ?: root, month)
|
||||||
Thread.sleep(500)
|
Thread.sleep(500)
|
||||||
|
|
||||||
// 再次更新根节点
|
// 再次更新根节点
|
||||||
val finalRoot = getUpdatedRoot() ?: updatedRoot ?: root
|
val finalRoot = rootNodeCallback.getRootNodeReceived() ?: updatedRoot ?: root
|
||||||
|
|
||||||
// 选择日期
|
// 选择日期
|
||||||
selectDay(finalRoot, day)
|
selectDay(finalRoot, day)
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.loveerror.bested.tool
|
||||||
|
|
||||||
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
|
import com.loveerror.bested.UIInspectorService
|
||||||
|
|
||||||
|
fun interface RootNodeCallback {
|
||||||
|
fun getRootNodeReceived(): AccessibilityNodeInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
class RootNodeCallbackImpl(private var uiInspectorService: UIInspectorService) : RootNodeCallback {
|
||||||
|
|
||||||
|
override fun getRootNodeReceived(): AccessibilityNodeInfo {
|
||||||
|
return uiInspectorService.rootInActiveWindow
|
||||||
|
}
|
||||||
|
}
|
||||||
29
app/src/main/java/com/loveerror/bested/tool/StorageTool.kt
Normal file
29
app/src/main/java/com/loveerror/bested/tool/StorageTool.kt
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package com.loveerror.bested.tool
|
||||||
|
|
||||||
|
import android.os.Environment
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
class StorageTool {
|
||||||
|
companion object{
|
||||||
|
fun getStorageFilePath(fileName: String): String {
|
||||||
|
// 检查外部存储是否可用
|
||||||
|
val externalStorageState = Environment.getExternalStorageState()
|
||||||
|
val isExternalStorageAvailable = externalStorageState == Environment.MEDIA_MOUNTED
|
||||||
|
|
||||||
|
// 优先使用外部存储(SD卡)
|
||||||
|
val directory = if (isExternalStorageAvailable) {
|
||||||
|
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
|
||||||
|
} else {
|
||||||
|
// 使用内部存储的下载目录
|
||||||
|
File(Environment.getExternalStorageDirectory(), "Download")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保目录存在
|
||||||
|
if (!directory.exists()) {
|
||||||
|
directory.mkdirs()
|
||||||
|
}
|
||||||
|
|
||||||
|
return File(directory, fileName).absolutePath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user