6

I have created an AccessibilityService which is working correctly and onAccessibilityEvent() is called on each event. What I want to do is populate an EditText in the browser from my Service. I can get this working in ordinary apps using AccessibilityNodeInfo.ACTION_PASTE. However this does not work with EditTexts from within a browser such as Chrome, even though they appear to be detected just the same.

Here is 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 deal 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 have defined further options in an 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" />

This all seems to work apart from on an EditText in say Chrome.. nothing appears, any other options? LastPass seem to do it somehow :-)

shkschneider
  • 17,833
  • 13
  • 59
  • 112
Gareth Murfin
  • 61
  • 1
  • 4

0 Answers0