"No se puede realizar esta acción en una instancia no sellada" excepción java.lang.IllegalStateException

Con Android AccessibilityService capaz de pegar en otra aplicación EditText campo, pero con el navegador testfields (Emulador de Navegador por defecto o Samsung Deault Browser) no funciona, lanzando error:

No se puede realizar esta acción en una instancia no sellada.

En el navegador de cromo Android con algunos singnup textfield su funcionamiento, pero no para todos los campos de texto.

  @Override public void onAccessibilityEvent(AccessibilityEvent event) { AccessibilityNodeInfo source = event.getSource(); if (source != null && ( event.getEventType() == AccessibilityEvent.TYPE_VIEW_FOCUSED ) ) { // || event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED ) && //event.getClassName().equals("android.widget.EditText") //) { ctx = getApplicationContext(); ClipboardManager clipboard = (ClipboardManager) ctx.getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("label", "XYZ"); clipboard.setPrimaryClip(clip); source.performAction(AccessibilityNodeInfo.ACTION_PASTE); //Not Working, always return false. //Tried with other options Bundle argumentsTest = new Bundle(); argumentsTest.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "Bundle Test Data"); source.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT,argumentsTest ) // Not Working, throw java.lang.IllegalStateException exception //Message: "Cannot perform this action on a not sealed instance" } } 

No creo que estés tratando de hacer lo que crees que estás tratando de hacer.

Cuando se establece el "texto" de un accessibilityNodeInfo, lo que se canta es la propiedad de texto de ese objeto, ya que se refiere a su servicio de accesibilidad. Esto no significa, que está cambiando el texto del cuadro EditText, que hace referencia el objeto accessibilityNodeInfo. En el momento en que su servicio de accesibilidad obtiene este objeto, los dos objetos están bastante separados entre sí. Incluso si su código se ejecutara correctamente, no estaría obteniendo los resultados que está esperando. Ahora, en cuanto a por qué usted no puede realizar esta acción, sabiendo esto debe ser obvio. Para que un servicio de accesibilidad pueda modificar los nodos que tiene, realmente no tiene sentido. Así que se convierten en sellados (pensar en esto como una ejecución en tiempo de ejecución de una constante). Los nodos de accesibilidad quedan sellados y sin sellar en varios puntos de su vida. Las partes del marco que tienen acceso a información de nodo no sellado son clases de vista y APIs privadas. Todas las tareas relacionadas con el servicio de accesibilidad van a tratar con instancias selladas y de sólo lectura.

En cuanto a por qué su solución original no funciona, creo que no tenemos suficiente información. El enfoque "ACTION_PASTE" es (aproximadamente) el enfoque correcto, SIN EMBARGO, hay una abundancia de problemas al hacerlo con los navegadores web. Versión de navegador, versión de Android, versión de dispositivo, sitio web, etc todos juegan un papel. Especialmente si su configuración es lo suficientemente antigua como para no usar el nuevo WebView (webview de cromo puro), en lugar del antiguo 4. + enfoque de extrañas WebViews móviles incrustadas basadas en versiones obsoletas de WebKit, que ahora nunca se actualizarán. Recomiendo probar su código en un dispositivo Nexus actualizado, utilizando por lo menos Android 5.0 y ver si su código funciona. Si no puede hacerlo, informe la información de la versión de su configuración. Si ya lo está, ¿en qué sitio web?

  • Enviar correo electrónico en servicio (sin preguntar al usuario)
  • cómo abrir la configuración de accesibilidad de mi aplicación directamente?
  • Facturación en aplicaciones de Android y servicio bindService
  • Android startService () tarda mucho tiempo en volver al subproceso de interfaz de usuario
  • Android ¿cómo espero hasta que un servicio esté realmente conectado?
  • Android - Ejecutar en segundo plano - Service vs. standard java class
  • Iniciar servicio desde la notificación
  • Android: Cómo detener el servicio de música de mi aplicación, si otra aplicación reproduce música.
  • Cómo iniciar una tarea de fondo de larga ejecución en el servicio de Android
  • En servicio de facturación de aplicaciones que se mueren a veces
  • Android: superposición en la ventana sobre las actividades de una tarea
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.