"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" } }
- Cómo reiniciar el servicio después de que la aplicación sea eliminada de las tareas recientes
- ¿Cómo iniciar AccessibilityService?
- ¿Es posible ejecutar mi servicio por tiempo indefinido?
- Detectar el evento "botón de inicio presionado" en el servicio android que muestra una interfaz de usuario (similar a los cabezales de chat de Facebook)
- El punto de interrupción en servicio no funciona
- Vinculante para ejecutar el servicio (después de finish ()) / callback Handler
- Servicio de Android: onBind (Intención) y onUnbind (Intención) se llama una sola vez
- Actividad de Android sin GUI
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?
- ¿Conseguir ubicación GPS en el modo de alta precisión deduce el dinero de nuestra balanza?
- Android utiliza el problema de permiso al instalar aplicaciones en orden incorrecto