Última respuesta, pero la respuesta es sí. Voy a proporcionar más detalles sobre este tema, ya que es el único tema en Internet de este tipo.
Comportamiento predeterminado: Android lo trata como un botón de retroceso, sin excepciones visibles.
Esta es una característica bastante buena para teléfonos y aplicaciones normales. Sin embargo, a dos tipos de personas les gustaría que esta característica se implemente de manera diferente. Modders y desarrolladores de aplicaciones. Fix
Modders': En un dispositivo arraigada (y potencialmente unrooted para un buen número de dispositivos oprimido con adb desbloqueado), observar Generic.kl
bajo /system/usr/keylayout
. Busque el indicador KEY_BACK
, puede haber varios códigos clave en varias líneas vinculadas a él. Para mí fue key 158
con la bandera WAKE_DROPPED
. Para una función genérica de "clic derecho", querrá cambiar los códigos numéricos de la tecla de retroceso y la tecla de menú, de modo que cuando el mouse envíe un comando de tecla de retroceso, el sistema activará un comando de tecla de menú, manteniendo algunas clave de hardware (tecla de menú etiquetada) en el dispositivo para volver atrás. Sí, esto revertirá las claves de hardware en su teléfono, pero es la solución más fácil, sin reconstruir toda la ROM. Si esto es por una causa corporativa o profesional, tal vez vea este artículo: Overriding Mouse Events Kernel-Level. De hecho, recomendaría crear un módulo Xposed que anule el procedimiento al que hacen referencia. De lo contrario, busque cómo reasignar códigos clave, lo siento, no pude encontrar un artículo sencillo aquí.
Corrección de los programadores de aplicaciones: No es root: Anula la clave de retroceso en su aplicación y devuelva el valor verdadero. En su anulación onBackPressed()
, realice cualquier función de clic derecho necesaria. ¡Sencillo! Como lo más probable es que desee una funcionalidad de menú contextual similar a la PC, también necesitará rastrear dónde está el mouse, a través de un oyente MotionEvent aplicado a la vista raíz con un event.getRawX()
y llamadas RawY() almacenando valores a un nivel global variable. A continuación, puede colocar su menú contextual (tamaño ListView o VerticalLinearLayout) debajo del cursor estableciendo los márgenes superior e izquierdo y establecerlo visible. Si desea realizar una función secundaria en un objeto suspendido en su diseño haciendo clic con el botón derecho, como eliminar o copiar, tendrá que averiguar manualmente sobre qué objeto se mueven las coordenadas almacenadas del mouse. Probablemente tendrá que agregar oyentes MotionEvent.ACTION_HOVER_ENTER
en cada objeto afectado y almacenar el ID del objeto en una variable global para utilizar cuando se llama a la función onBackPressed(). (¡Proporcionaré el código cuando tenga tiempo!)
¡Espero que esto ayude a cualquiera que explore un tema tan específico! :)
Por favor, especifique el modelo/marca de la tableta. –
Esta era una marca sin nombre directamente de la fábrica en China. Parece que cometieron un error, y en ese momento, no sabía cuál era el comportamiento estándar. Ya que no lo reconocieron como un error desde el principio. Gracias turbo –