如何使用AccessibilityService在浏览器中的EditText中设置文本

时间:2015-04-24 14:22:32

标签: android accessibilityservice

我创建了一个正常工作的AccessibilityService,并在每个事件上调用onAccessibilityEvent()。我想要做的是从我的服务中填充浏览器中的EditText。我可以使用AccessibilityNodeInfo.ACTION_PASTE在普通应用中使用它。但是,这不适用于浏览器(如Chrome)中的EditText,即使它们似乎检测到相同。

以下是我设置服务的方式:

protected void onServiceConnected() {
    super.onServiceConnected();
    Log.v(TAG, "onServiceConnected");
    _("CONNECTED");
    toast("service connected");
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.flags = AccessibilityServiceInfo.DEFAULT |
            AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS |
            AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY |
            AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS |
            AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
    info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
    setServiceInfo(info);
}

我如何处理事件:

@Override
public void onAccessibilityEvent(final AccessibilityEvent event) {
    _("//////////////////onAccessibilityEvent");
    final AccessibilityNodeInfo source = event.getSource();
    if (source == null) {
        return;
    }
    AccessibilityNodeInfo source = event.getSource();
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    ClipData clip = ClipData.newPlainText("label", "MyData");
    clipboard.setPrimaryClip(clip);
    source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
}

我已使用以下命令在清单中的xml文件中定义了更多选项:

 <intent-filter>
     <action android:name="android.accessibilityservice.AccessibilityService" />
 </intent-filter>
 <meta-data android:name="android.accessibilityservice" android:resource="@xml/access" />

这一切似乎与Chrome中的EditText分开..没有出现任何其他选项? LastPass似乎以某种方式做到了: - )

0 个答案:

没有答案