2015-11-17 15 views
8

È possibile attivare l'hotspot Wi-Fi a livello di programmazione, per abilitare il tethering? Ho provato il codice here e here. Entrambi gli esempi vengono eseguiti senza eccezioni, ma quando guardo nella sezione "Tethering & hotspot portatile" nelle impostazioni wifi, il tethering è ancora disabilitato. È possibile solo per le app Google interne?Attivare il Tethering Wi-Fi programmaticamente

EDIT: sto utilizzando Android 5.1 e sto provando a farlo senza dover eseguire il rooting del telefono.

risposta

7

Provare sotto il codice, per attivare il tethering wifi a livello di programmazione. Ho provato e funziona nella mia applicazione.

public class WifiAccessManager { 

    private static final String SSID = "1234567890abcdef"; 
    public static boolean setWifiApState(Context context, boolean enabled) { 
     //config = Preconditions.checkNotNull(config); 
     try { 
      WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
      if (enabled) { 
       mWifiManager.setWifiEnabled(false); 
      } 
      WifiConfiguration conf = getWifiApConfiguration(); 
      mWifiManager.addNetwork(conf); 

      return (Boolean) mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class).invoke(mWifiManager, conf, enabled); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return false; 
     } 
    } 

    public static WifiConfiguration getWifiApConfiguration() { 
     WifiConfiguration conf = new WifiConfiguration(); 
     conf.SSID = SSID; 
     conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
     return conf; 
    } 
} 

Usage:

WifiAccessManager.setWifiApState(context, true); 

Permesso Richiede:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
+0

Grazie per la rapida risposta! Questo riesce a disattivare la rete wifi, ma setWifiApState restituisce false e il tethering non viene attivato. Ho bisogno di un telefono rooted? Sto cercando di farlo senza fare il rooting del telefono. – CalumMcCall

+0

@CalumMcCall Ho bisogno di un telefono rooted? non penso, perché il mio dispositivo non è radicato e funziona. –

+1

@CalumMcCall potrebbe essere dovresti provare printStackTrace nel metodo setWifiApState per vedere l'errore. –

Problemi correlati