I'm trying to enable the wifi Access-Point on android device programmatically. The access-pint is already created and works fine. I only want to enable/disable it by code. The code doesn't work very well. The AP is enabled(by code) but I can't connect to the AP from any other device. However, if I disable and then enable the AP manually, then I can connect to the AP. Here's my code:
All the permissions are granted in the manifest file and I don't see any error logs in the console. Can you tell me if I'm missing something?
Thanks!
Code:
final class WifiApManager {
private static final int WIFI_AP_STATE_FAILED = 4;
private final WifiManager mWifiManager;
private final String TAG = "Wifi Access Manager";
private Method wifiControlMethod;
private Method wifiApConfigurationMethod;
private Method wifiApState;
@SuppressLint("RestrictedApi")
public WifiApManager( Context context) throws SecurityException, NoSuchMethodException {
context = Preconditions.checkNotNull(context);
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiControlMethod = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class,boolean.class);
wifiApConfigurationMethod = mWifiManager.getClass().getMethod("getWifiApConfiguration",null);
wifiApState = mWifiManager.getClass().getMethod("getWifiApState");
}
@SuppressLint("RestrictedApi")
public boolean setWifiApState( WifiConfiguration config, boolean enabled) {
config = Preconditions.checkNotNull(config);
try {
if (enabled) {
mWifiManager.setWifiEnabled(!enabled);
}
return (Boolean) wifiControlMethod.invoke(mWifiManager, config, enabled);
} catch (Exception e) {
Log.e(TAG, "", e);
return false;
}
}
public WifiConfiguration getWifiApConfiguration() {
try{
return (WifiConfiguration)wifiApConfigurationMethod.invoke(mWifiManager, null);
}
catch(Exception e)
{
return null;
}
}
public int getWifiApState() {
try {
return (Integer)wifiApState.invoke(mWifiManager);
} catch (Exception e) {
Log.e(TAG, "", e);
return WIFI_AP_STATE_FAILED;
}
}
}
All the permissions are granted in the manifest file and I don't see any error logs in the console. Can you tell me if I'm missing something?
Thanks!