How to use AccessibilityService to set text in EditText in browser

I created an AccessibilityService that works correctly, and onAccessibilityEvent() is called for each event. What I want to do is fill in the EditText in the browser from my Service. I can get this to work in regular applications using AccessibilityNodeInfo.ACTION_PASTE . However, this does not work with EditText in a browser such as Chrome, although they seem the same.

Here's how I set up the service:

 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); } 

And how I communicate with events:

 @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); } 

I defined additional parameters in the xml file from the manifest using:

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

All this seems to work separately from EditText , for example, in Chrome .. nothing appears, no other options? LastPass seems to do it somehow :-)

+6
source share

Source: https://habr.com/ru/post/985886/


All Articles