¿Cómo puedo iniciar o detener el anclaje incorporado en Android 2.2 desde mi aplicación?¿Iniciar/detener el anclaje de Wi-Fi/USB incorporado desde el código?
Respuesta
No hay API públicas en el SDK de Android para administrar el anclaje - ¡lo siento!
Respondí esta pregunta here. En resumen, es posible , aquí está el código:
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 los siguientes permisos:
android.permission.CHANGE_WIFI_STATE
Esto funciona bien .. Gracias –
Pero cómo verificar que el cliente esté conectado con el dispositivo o no? –
Me gustaría saber esto también. Y para deshabilitar el tethering, ¿llamarías al método 'setWifiApDisabled'? o puede usar 'method.invoke (wifiManager, null, disable);'? – SubliemeSiem
Hay un no -público Tethering API en el ConnectivityManager
. Como se muestra arriba, puede usar la reflexión para acceder a ella. Intenté esto en una serie de teléfonos con Android 2.2, y funciona en todos ellos (mi HTC activa el tethering pero NO lo muestra en la barra de estado ... así que compruebe desde el otro extremo). A continuación se muestra un código aproximado que emite elementos de depuración y enciende el tethering en usb0.
ConnectivityManager cman = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Method[] methods = cman.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals("getTetherableIfaces")) {
try {
String[] ifaces = (String[]) method.invoke(cman);
for (String iface : ifaces) {
Log.d("TETHER", "Tether available on " + iface);
}
} catch (Exception e) {
e.printStackTrace();
}
}
if (method.getName().equals("isTetheringSupported")) {
try {
boolean supported = (Boolean) method.invoke(cman);
Log.d("TETHER", "Tether is supported: " + (supported ? "yes" : "no"));
} catch (Exception e) {
e.printStackTrace();
}
}
if (method.getName().equals("tether")) {
Log.d("TETHER", "Starting tether usb0");
try {
int result = (Integer) method.invoke(cman, "usb0");
Log.d("TETHER", "Tether usb0 result: " + result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Atención: este código requiere los siguientes permisos para trabajar:
android.permission.ACCESS_NETWORK_STATE
android.permission.CHANGE_NETWORK_STATE
que utiliza el código de Android How to turn on hotspot in Android Programmatically! y habilito el punto de acceso portátil para Android 4.2. Aquí está el código.
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// TODO Auto-generated method stub
WifiConfiguration wifi_configuration = null;
wifiManager.setWifiEnabled(false);
try
{
//USE REFLECTION TO GET METHOD "SetWifiAPEnabled"
Method method=wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
method.invoke(wifiManager, wifi_configuration, true);
}
catch (NoSuchMethodException e){
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
- 1. Código fuente de Python para el operador "in" incorporado
- 2. prevenir el comportamiento de anclaje
- 3. STL en el entorno incorporado
- 4. Establecer CustomupExtension desde el código
- 5. AST desde el código C
- 6. Ejecutar el comando CMD desde el código
- 7. Extendiendo el String incorporado de Python
- 8. Configurar recursos de aplicación desde el código
- 9. Ejecutar migraciones de FluentMigrator desde el código
- 10. Ejecutando el código de ruby desde vim
- 11. use .htaccess con el servidor incorporado php5.4
- 12. QT: Cambia el nombre del ejecutable incorporado
- 13. Rendimiento de invocar código no administrado desde el código administrado
- 14. ¿Cómo configurar el directorio de datos nltk desde el código?
- 15. Android: Determine el método de entrada activo desde el código
- 16. Mostrar el menú contextual desde el código detrás de
- 17. Obtiene el objeto HttpServletRequest (solicitud) desde el código de Java
- 18. la configuración del registro para un Tomcat incorporado desde el plugin de Maven
- 19. iOS, detectar ad-hoc desde el código
- 20. Instalar IIS desde el código C#
- 21. Cómo subir Suds.WebFault desde el código python?
- 22. Cambiar clases CSS desde el código
- 23. ¿Cómo desencadenar Google Analytics desde el código?
- 24. Desplácese a WPF FlowDocumentScrollViewer desde el código?
- 25. Usando DLR desde el código no administrado
- 26. WPF: Animando TranslateTransform desde el código
- 27. ¿Cómo invocar generadores desde el código?
- 28. Compilar DLL desde el código python
- 29. Cómo seleccionar elemento TreeView desde el código
- 30. WPF: Agregar controles desde el código
posible duplicado de [Android 2.2 WiFi Hotspot API] (http://stackoverflow.com/questions/3023226/android-2-2-wifi-hotspot-api) –