阿白的发言 發表於 2025-3-26 22:26:00

AccessibilityService微信自动化节点元素混淆问题解决

<h1 id="问题背景">问题背景</h1>
<p>AccessibilityService获取微信版本8.0.52以上的节点元素时信息会被混淆打乱,导致无法正常执行AccessibilityService自动化逻辑,这个问题直接影响自动化脚本对于后面微信版本的兼容。</p>
<h1 id="解决">解决</h1>
<p>在自动化开源库Assists有网友提了这个关于微信的issues,最终也是他提供的解决方法:</p>
<blockquote>
<p><strong>创建注册一个与系统内置的相同包名类名的无障碍服务,比如:<code>com.google.android.marvin.talkback.TalkBackService</code></strong></p>
</blockquote>
<p>最终通过验证确实可以👍</p>
<p>但是发现开启这个服务后小米手机屏幕上一直显示两行文字:<br>
<img src="https://img2024.cnblogs.com/blog/3438894/202503/3438894-20250326222554245-1766694432.png"></p>
<p>因为<code>com.google.android.marvin.talkback.TalkBackService</code>是Android系统自带的屏幕阅读器服务所以开启后会一直显示这两行文字</p>
<p>解决办法是可以定义其他系统无障碍服务相同包名类名的服务,比如:<code>com.google.android.accessibility.selecttospeak.SelectToSpeakService</code></p>
<p>在Assists中已经定义好了这个服务,集成这个库然后直接在自己的主模块中注册这个服务来使用即可</p>
<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.ven.assists.simple"&gt;
    &lt;application
      android:name="com.ven.assists.simple.App"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:requestLegacyExternalStorage="true"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme"
      android:usesCleartextTraffic="true"&gt;
      &lt;!-- 注册下面的服务--&gt;
      &lt;service
            android:name="com.google.android.accessibility.selecttospeak.SelectToSpeakService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"&gt;
            &lt;!--android:priority="10000" 可提高服务在设置中的权重,排在前面   --&gt;
            &lt;intent-filter android:priority="10000"&gt;
                &lt;action android:name="android.accessibilityservice.AccessibilityService" /&gt;
            &lt;/intent-filter&gt;
            &lt;meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/assists_service" /&gt;
      &lt;/service&gt;
    &lt;/application&gt;

&lt;/manifest&gt;
</code></pre><br><br>
来源:https://www.cnblogs.com/venblog/p/18794934
頁: [1]
查看完整版本: AccessibilityService微信自动化节点元素混淆问题解决