Come posso avviare o interrompere il tethering integrato in Android 2.2 dalla mia applicazione?Avvia/interrompe il tethering Wi-Fi/USB integrato dal codice?
risposta
Non ci sono API pubbliche nell'SDK di Android per la gestione del tethering - sorry!
Ho risposto a questa domanda here. In breve, è è possibile, ecco il codice:
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;
}
}
}
La vostra applicazione deve avere i seguenti permessi:
android.permission.CHANGE_WIFI_STATE
Ciò funziona benissimo .. Grazie –
Ma come verificare che il client sia connesso al dispositivo o no? –
Mi piacerebbe saperlo anche questo. E per disabilitare il tethering, chiameresti il metodo 'setWifiApDisabled'? oppure puoi usare 'method.invoke (wifiManager, null, disable);'? – SubliemeSiem
C'è un non -API Tethering pubblico nel ConnectivityManager
. Come mostrato sopra è possibile utilizzare la riflessione per accedervi. Ho provato questo su un certo numero di telefoni Android 2.2, e funziona su tutti loro (il mio HTC attiva il tethering ma NON lo mostra nella barra di stato ..., quindi controlla dall'altra parte). Di seguito è riportato un codice approssimativo che emette il debugging e attiva il tethering su 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();
}
}
}
Si prega di notare: questo codice richiede le seguenti autorizzazioni per lavorare:
android.permission.ACCESS_NETWORK_STATE
android.permission.CHANGE_NETWORK_STATE
ho usato il codice Android How to turn on hotspot in Android Programmatically! e abilito l'hotspot portatile per Android 4.2. Ecco il codice.
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. Attivare il Tethering Wi-Fi programmaticamente
- 2. Rileva tethering USB su Android
- 3. Connessione Android alla presa di tethering
- 4. Sviluppo di un'app tethering per iPhone privato
- 5. Abilita il tethering del bluetooth Android a livello di programmazione
- 6. Il codice dal libro non funziona
- 7. Come eseguire il codice Ruby dal terminale?
- 8. Client REST/HTTP integrato Groovy?
- 9. Come utilizzare il codice gestito dal codice non gestito?
- 10. generare il codice finale dal modello di codice Haskell
- 11. Tethering inverso USB Android: come ingannare le app
- 12. jQuery ha integrato il supporto JSON?
- 13. con dati dal codice
- 14. Setter.Value rilegatura dal codice
- 15. Dove va il mio stdout di python integrato?
- 16. ottenere l'elenco di tutti gli utenti connessi utilizzando il tethering wifi in Android
- 17. Android - abilita il tethering USB a livello di codice - c'è un'app che lo ha fatto per 2.3
- 18. "Send Feedback" integrato nell'applicazione
- 19. C# Come generare codice dal codice
- 20. Come utilizzare il download manager integrato su Android
- 21. Test integrato Dropwizard con TestResource
- 22. Come utilizzare il supporto multilingue integrato di Delphi?
- 23. Costruisci il sistema per un progetto C/C++ integrato
- 24. Imposta markupExtension personalizzato dal codice
- 25. log4net log4net.Util.PatternString configure dal codice
- 26. Avvia l'applicazione Android dal codice
- 27. Access asp: contenuto dal codice
- 28. Come chiamare onCreateOptionsMenu dal codice
- 29. Invoke interrompere dal codice R
- 30. Utilizzo di phpdbg con il server php integrato?
possibile duplicato del [Android 2.2 WiFi Hotspot API] (http://stackoverflow.com/questions/3023226/android-2-2-wifi-hotspot-api) –