android - event.getSource() 在 android 中返回空辅助功能

标签 android android-activity accessibility accessibility-api

我尝试使用无障碍服务(如 DashLane)或其他一些使用无障碍服务的应用来填充 EditText 字段。

我正在使用一个聚焦的事件 View 。当 EditText 获得焦点时,事件开始,但 getSource() 返回 null。

代码:

  AccessibilityNodeInfo source = event.getSource();

if (source != null) {
        ClipboardManager clipboard = (ClipboardManager)  context.getSystemService(Context.CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newPlainText("label", "TEST DATA");
        clipboard.setPrimaryClip(clip);
        source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
        Toast.makeText(MyAccessibilityService.this, "Pasted Successfully", Toast.LENGTH_LONG);
}

...我已经尝试了其他一些出错的方法。所以这里的一个问题是为什么它返回 null?

安卓 list

            <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
            <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
            <application
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name" 
                android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
                <service android:name=".MyAccessibilityService" android:label="@string/app_name" android:enabled="true" android:exported="true">
                <intent-filter>
                    <action android:name="android.accessibilityservice.AccessibilityService" android:resource="@xml/accessibility" />
                </intent-filter>  

辅助功能.xml

        <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
            android:description="@string/accessibility_service_description"
            android:packageNames="com.test.toasts2"
            android:accessibilityEventTypes="typeAllMask"
            android:accessibilityFlags="flagDefault"
            android:accessibilityFeedbackType="feedbackSpoken"
            android:notificationTimeout="100"
            android:canRetrieveWindowContent="true"
            android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"
        />

最佳答案

您错过了 list 文件中的元标记。只需添加。

       <meta-data android:name="android.accessibilityservice"
       android:resource="@xml/accessibility">

关于android - event.getSource() 在 android 中返回空辅助功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30861431/

相关文章:

android - html input type = number 不允许在某些机器人上使用小数点

android - 如何将多个整数发送到新 Activity ?

Applescript 将显示切换到灰度模式

html - 屏幕阅读器到底是什么?我应该如何处理我的网站?

reactjs - 将可访问性 Prop 传递给 Material UI 按钮

android - 是什么导致 ListView 在方向更改后保持其滚动位置?

javascript - 如何调用可以读取条形码并将数据返回到html的 native 应用程序

android - XMPP - 资源绑定(bind)有用性

android - 如何在android中实现注销行为

Android 屏幕方向已更改,不保存以编程方式添加的 TextView