Android getOnTouchListener con la versión del API> = 15
Necesito saber si se ha establecido un OnTouchListener en una vista. El siguiente código funciona bien por debajo del nivel de api 15.
public static boolean isSetOnTouchListener_v8(View v) { try { Class<View> clazz = (Class<View>) Class.forName("android.view.View"); Field f = clazz.getDeclaredField("mOnTouchListener"); f.setAccessible(true); if (f.get(v) == null) { return false; } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return true; }
Ahora necesito el mismo método para api nivel 15 y superior.
- Reflexión de Java para el método estático privado con parámetros
- Acceso a campos desde un objeto proxy
- Modo de avión en Jelly Bean
- Soporte de la clase Robolectric de Android. Cómo tener las referencias de la clase de biblioteca R desde el proyecto de aplicación
- UnsuppotedOperationException.getCause se devuelve
He intentado el siguiente código, pero no funciona. ¿Alguien tiene alguna sugerencia?
public static boolean isSetOnTouchListener_v15(View v) { try { Object listenerInfo = getListenerInfo(v); if (listenerInfo != null) { Class<? extends Object> clazz = listenerInfo.getClass(); Field f = clazz.getDeclaredField("mOnTouchListener"); f.setAccessible(true); if (f.get(listenerInfo) == null) return false; } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return true; } private static Object getListenerInfo(View v) { Field f = null; try { f = View.class.getDeclaredField("mListenerInfo"); f.setAccessible(true); return (Object) f.get(v); } catch (Exception e) { return null; } }
- BackupAgent compatible con versiones anteriores
- Métodos de reflexión no funcionan cuando se utiliza proguard para la aplicación de Android
- Anotación personalizada de Java y carga dinámica
- ¿Cómo obtengo el nombre del método dentro de ese método?
- Clase personalizada que carga / reemplaza las clases nativas de Android
- Confirmación de mi comprensión del principio de Android Concept (uso de múltiples actividades)
- Proguard y reflexión en Android
- ¿Se considera reflexión y en qué grado?
- Confundido por la navegación ActionBar UP
- configuración del color de fondo del panel de opciones del menú manualmente