Создать конфигурацию точки доступа Wi-Fi в Android

Я использую Android 4.1.1 ... Я делаю приложение, которое позволяет пользователю создавать свою собственную сеть с помощью точки доступа Wi-Fi, а затем клиенты могут подключаться к ней и обмениваться данными. Я успешно создал точку доступа Wi-Fi в Android, но не могу настроить ее для этой цели. Есть ли способ настроить точку доступа Wi-Fi на Android с помощью кодирования??


person Khan Umair    schedule 17.06.2013    source источник
comment
,... проверьте мой ответ для вас.   -  person gumuruh    schedule 25.07.2014


Ответы (2)


Возможно, этот ответ устарел!

if(wifiManager.isWifiEnabled())
{
    wifiManager.setWifiEnabled(false); 
}

WifiConfiguration netConfig = new WifiConfiguration();

netConfig.SSID = "MyAP";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

try{
    Method setWifiApMethod = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
    boolean apstatus=(Boolean) setWifiApMethod.invoke(wifiManager, netConfig,true);

    Method isWifiApEnabledmethod = wifiManager.getClass().getMethod("isWifiApEnabled"); 
    while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){};
    Method getWifiApStateMethod = wifiManager.getClass().getMethod("getWifiApState"); 
    int apstate=(Integer)getWifiApStateMethod.invoke(wifiManager);
    Method getWifiApConfigurationMethod = wifiManager.getClass().getMethod("getWifiApConfiguration");
    netConfig=(WifiConfiguration)getWifiApConfigurationMethod.invoke(wifiManager);
    Log.e("CLIENT", "\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n");

} catch (Exception e) {
    Log.e(this.getClass().toString(), "", e);
}
person mizdler    schedule 27.12.2013
comment
Есть ли setWifiApConfiguration для этой точки доступа Wi-Fi, чтобы я мог подключиться к пользовательской точке доступа Wi-Fi с помощью кода. - person zionpi; 28.06.2016
comment
Не работает на Android 6 и 5.1 выше. Я добавил разрешение ACTION_MANAGE_WRITE_SETTINGS, но по-прежнему получаю сообщение об ошибке Exception in softap start java.lang.IllegalStateException: command '2707 softap set wlan0 .... - person AkshayT; 30.01.2017
comment
@AkshayTaru Ничего удивительного! в то время, когда я ответил, последняя версия Android была 5.0, надеюсь, вы сможете обновить ответ. - person mizdler; 31.01.2017

Вот возможное решение:

private WifiManager.LocalOnlyHotspotReservation mReservation;

 WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

wifiManager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback() {

        @Override
        public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {
            super.onStarted(reservation);
            mReservation = reservation;
        }

        @Override
        public void onStopped() {
            super.onStopped();
        }

        @Override
        public void onFailed(int reason) {
            super.onFailed(reason);
        }
    }, new Handler());
person tushar    schedule 29.12.2018
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его ценность в долгосрочной перспективе. - person double-beep; 29.12.2018