3

我尝试使用 DashLane 之类的辅助功能服务或其他使用辅助功能服务的应用程序来填充 EditText 字段。

我正在使用以事件视图为中心的。当 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?

安卓清单

            <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"
        />
4

2 回答 2

4

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

       <meta-data android:name="android.accessibilityservice"
       android:resource="@xml/accessibility">
于 2015-06-16T12:02:42.053 回答
0

确保android:canRetrieveWindowContent="true"

这对我有用。而且这个属性不能通过java代码设置。

于 2017-09-20T16:19:39.937 回答