2013-03-21 9 views
7

Sto sviluppando un servizio di accessibilità Android. Ho ottenuto un AccessibilityNodeInfo che rappresenta un EditText. È possibile modificare il testo contenuto?Imposta testo in AccessibilityNodeInfo

ho provato con mynode.setText("aaa") ma ottengo IllegalStateException come descritto nella documentazione ufficiale http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html

Tutte le idee? Grazie

+0

No, non è possibile impostare il contenuto di un EditText da un AccessibilityService utilizzando AccessibilityNodeInfo. I nodi di accessibilità sono pensati solo per leggere informazioni ed eseguire un piccolo insieme di azioni (vedi AccessibilityNodeInfo.performAction). Tuttavia, è possibile realizzare attraverso un IME. – alanv

+0

@alanv, come lo faresti? – r2DoesInc

+2

In realtà, mi sembra che mi sia sbagliato. A partire da API 18 è possibile utilizzare ACTION_PASTE per inserire il testo da ClipboardManager. In combinazione con le azioni di selezione del testo, è possibile modificare in modo efficace una porzione di testo; tuttavia, l'API non era pensata per questo e potrebbe non funzionare correttamente. – alanv

risposta

12

È possibile utilizzare ACTION_SET_TEXT per> = Android 21. Ecco l'esempio di esso:

AccessibilityNodeInfo source = event.getSource(); 
if (source != null & event.getClassName().equals("android.widget.EditText")) { 
    Bundle arguments = new Bundle(); 
    arguments.putCharSequence(AccessibilityNodeInfo 
      .ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android"); 
    source.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments); 
} 
+0

Grazie mille. Ho salvato la mia giornata – XylemRaj

Problemi correlati