Ich verwende eine AccessibilityService
in meiner App, um einen Text in die EditText
einer anderen App einzufügen.AccessibilityNodeInfo.performAction() Methode funktioniert manchmal nicht
ich den folgenden Code verwenden das gleiche zu erreichen,
Bundle bundle = new Bundle();
bundle.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD);
bundle.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
true);
eventSource.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
bundle);
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("text", stringToCopy);
clipboard.setPrimaryClip(clip);
eventSource.performAction(AccessibilityNodeInfo.ACTION_PASTE);
Diese für normale Fälle gut funktioniert. Allerdings, wenn ich
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
und führen Sie den obigen Code auf Dialogtaste drückt ein AlertDialog
vom AccessibilityService
mit öffnen, es anormalem Verhalten.
Fall 1: Fein- und Text Works wird von Dialog
Fall geklebt 2: Text wird eingefügt aber die Auswahl nicht gemacht wird und daher bleibt das vorherige Wort im Bereich
Fall 3 : Nichts passiert, nur der Dialog wird ausgeblendet. In allen Fällen wird der Text in Clipboard kopiert und kann manuell eingefügt werden.
Irgendwelche Hinweise?