Anclaje a red USB de Android: cómo engañar a las aplicaciones

18

Conexión inversa USB = El teléfono celular obtiene conexión de red desde la PC a través de USB.

Sé cómo hacer un anclaje inverso USB, excepto por un problema: muchas aplicaciones de Android comprobarán la conexión de red utilizando el código a continuación antes de realizar cualquier trabajo útil:

ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();

El problema es que, cuando se usa el anclaje inverso USB, el código anterior informará que no hay conexión de red. Sin embargo, hay una conexión de red (que es el enlace USB inverso), y ping, wget y todos los programas que no realizan esta estúpida verificación funcionan bien.

Entonces, la pregunta es: ¿cómo puedo hackear el sistema para permitir que esta verificación de conexión de red regrese con éxito (para poder engañar a estas aplicaciones)?

Por cierto. Uso Cyanogenmod 7. Y cualquier solución específica para este MOD también es bienvenida.

Cyker
fuente
Esta pregunta trata el mismo problema que android.stackexchange.com/questions/11728/…
Flow
Tony Beta Lambda publicó una solución válida: debería considerar aceptarla.
Michaël

Respuestas:

5

Veo que esta es una pregunta bastante antigua, pero por si alguien buscó en Google y llegó aquí. Hay un módulo bastante nuevo llamado FakeWifiConnection basado en el marco Xposed. La instalación y el uso deberían ser bastante sencillos.

Tony Beta Lambda
fuente
Eso es genial; debe publicar la misma respuesta en android.stackexchange.com/questions/11728/…
Michaël
@ Michaël Creo que esa pregunta se marcó como duplicada
Tony Beta Lambda, el
9

Yo diría que solo hay soluciones específicas para Mod. Casi todas las aplicaciones que conozco utilizan esta API de Android y, por lo tanto, el código recortado en sus preguntas, para las comprobaciones de conectividad de red.

Debería cambiar la fuente de Cyanogen para que el sistema operativo (Android + Cyanogen) conozca la conectividad de la red de anclaje inverso USB y devuelva la información correcta a la aplicación que solicita el estado actual de la red. No creo que esto se pueda hacer con una capa artificial entre la API y la aplicación que "engaña" a la aplicación. Es más realista que Cyanogen implemente el manejo del anclaje inverso imitando una conexión WiFi activa. Debe pedirles que aborden este tema. Tal vez en el futuro Android tenga soporte oficial para el anclaje inverso. :)

Fluir
fuente