2010-08-20 26 views
16

¿Hay alguna forma de habilitar o deshabilitar la conexión tethering (USB o wifi) en un teléfono Android programáticamente? Tal vez una API en SDK de Android o NDK o cualquier comando que no sea de UI para hacer eso.Habilitar/deshabilitar la conexión USB o WiFi programáticamente en Android

Gracias de antemano.

+1

para el anclaje de USB, ver: http://stackoverflow.com/questions/7509924/detect-usb-tethering-on-android/7830747#7830747 para thethering wifi, ver: http://stackoverflow.com/questions/3023226/android-2-2-wifi-hotspot-api – byndhorizon

+0

por favor, consulte este enlace https://github.com/abhinay100/wifi-tethering obtendrá el código completo para wifi tethering que funciona perfectamente – Abhinay

Respuesta

8

Eche un vistazo a this question.

Básicamente no hay API públicas para hacerlo. Eche un vistazo a la aplicación de configuración para ver cómo lo hacen las aplicaciones internas. Podría tener un poco de suerte con eso:

https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/TetherSettings.java

+3

Las aplicaciones internas pueden ejecutar setUsbTethering (verdadero); porque tienen acceso a la autorización MANAGE_USB. Es irrelevante para los desarrolladores estándar. – JaLoveAst1k

11

Se es posible y sin acceso root, yo uso el código de abajo cortado con tijeras en mis aplicaciones:

private void setWifiTetheringEnabled(boolean enable) { 
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 

    Method[] methods = wifiManager.getClass().getDeclaredMethods(); 
    for (Method method : methods) { 
     if (method.getName().equals("setWifiApEnabled")) { 
      try { 
       method.invoke(wifiManager, null, enable); 
      } catch (Exception ex) { 
      } 
      break; 
     } 
    } 
} 

Su aplicación debe tener la siguiente permiso:

android.permission.CHANGE_WIFI_STATE

+0

Aparece el mensaje "No se pudo iniciar el AP suave con un suplicante en ejecución" en los registros cuando se intenta esto en nexus s, stock 4.1. – DixieFlatline

+0

Consulte el debate [aquí] (https://code.google.com/p/android/issues/detail?id=1124), parece ser un problema notificado – iTech

+0

Tenga en cuenta que esto no funciona en los dispositivos Lollipop (probado hasta 5.1.1), necesita tener acceso de root. Obtendrá una InvocationTargetException porque la aplicación no tiene permiso del sistema: android.permission.CONNECTIVITY_INTERNAL – vman

Cuestiones relacionadas