2015-11-17 3 views
8

Можно ли программно включить горячую точку Wi-Fi, чтобы включить модем? Я пробовал код here и here. Оба примера выполняются без каких-либо исключений, но когда я смотрю в разделе «Связывание портативной точки доступа» в настройках Wi-Fi, привязка по-прежнему отключена. Это возможно только для внутренних приложений Google?Включение wifi-модема программно

EDIT: Я использую Android 5.1, и я пытаюсь сделать это, не запустив телефон.

ответ

7

Попробуйте ввести код, чтобы программно включить Wi-Fi-модем. Я тестировал, и он работает в моем приложении.

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

Использование:

WifiAccessManager.setWifiApState(context, true); 

Разрешение Требуется:

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

Спасибо за быстрый ответ! Это позволяет отключить Wi-Fi, но setWifiApState возвращает false, и привязка не активируется. Мне нужен корневой телефон? Я пытаюсь сделать это, не укоряя телефон. – CalumMcCall

+0

@CalumMcCall Нужен ли мне корневой телефон? я так не думаю, так как мое устройство не укоренено и оно работает. –

+1

@CalumMcCall может быть, вы должны попробовать printStackTrace в методе setWifiApState, чтобы увидеть ошибку. –

Смежные вопросы