2010-08-20 6 views
16

Existe-t-il un moyen d'activer ou de désactiver le partage de connexion (USB ou wifi) sur un téléphone Android par programmation? Peut-être une API dans Android SDK ou NDK ou toute autre commande non-UI pour le faire.Activer/Désactiver le partage de connexion USB ou Wifi par programmation sur Android

Merci d'avance.

+1

pour tethering USB, voir: http://stackoverflow.com/questions/7509924/detect-usb-tethering-on-android/7830747#7830747 pour le wifi thethering, voir: http://stackoverflow.com/questions/3023226/android-2-2-wifi-hotspot-api – byndhorizon

+0

veuillez vérifier ce lien https://github.com/abhinay100/wifi-tethering vous obtiendrez le code complet pour Partage de connexion sans fil qui fonctionne parfaitement – Abhinay

Répondre

8

Jetez un oeil à this question.

Fondamentalement, il n'y a pas d'API publique pour le faire. Jetez un oeil à l'application des paramètres pour voir comment les applications internes le font bien. Pourrait avoir un peu de chance avec cette:

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

+3

Les applications internes peuvent exécuter setUsbTethering (true); parce qu'ils ont accès à l'autorisation MANAGE_USB. Il n'est pas pertinent de standart développeurs. – JaLoveAst1k

11

Il est possible et sans accès root, j'utiliser le code ci-dessous snipped dans mes applications:

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; 
     } 
    } 
} 

Votre application devrait avoir la permission suivante:

android.permission.CHANGE_WIFI_STATE

+0

Je reçois le message "Échec de lancement de l'AP logiciel avec un suppliant en cours" dans les journaux lorsque j'essaie ceci sur le Nexus, stock 4.1. – DixieFlatline

+0

Voir la discussion [ici] (https://code.google.com/p/android/issues/detail?id=1124), il semble que ce soit un problème signalé – iTech

+0

Notez que cela ne fonctionne pas sur les appareils Lollipop (testé jusqu'à 5.1.1), vous devez avoir un accès root. Vous obtiendrez une exception InvocationTargetException car l'application n'a pas l'autorisation système: android.permission.CONNECTIVITY_INTERNAL – vman

Questions connexes