"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?

  • Google Cloud Messaging - GCM - SERVICE_NOT_AVAILABLE
  • El archivo AIDL no genera un archivo Java
  • Animar ImageView dentro de WindowManager en un servicio de Android
  • Cómo reiniciar el servicio después de que la aplicación sea eliminada de las tareas recientes
  • Cómo repetir la notificación diaria en el tiempo específico en androide a través del servicio de fondo
  • Grabación de errores en vídeos android
  • Android - ¿Cómo decidir si ejecutar un servicio en un proceso separado?
  • Temporizador de cuenta atrás Android en segundo plano
  • Android - Ejecutar en segundo plano - Service vs. standard java class
  • El micrófono Android no funciona cuando se utiliza por otra aplicación en el servicio de fondo
  • Android: uso de la red en un servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.