Skip to content

Instantly share code, notes, and snippets.

@cocal
Forked from madeye/WifiProxyManager.java
Created April 28, 2014 00:55

Revisions

  1. @madeye madeye created this gist Dec 21, 2012.
    97 changes: 97 additions & 0 deletions WifiProxyManager.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,97 @@
    package me.madeye;

    import android.content.Context;
    import android.net.ProxyProperties;
    import android.net.wifi.WifiConfiguration;
    import android.net.wifi.WifiManager;
    import android.os.Handler;
    import android.util.Log;

    import java.util.List;

    public class WifiProxyManager {

    private static int networkID = -1;

    private static final String TAG = "WifiProxyManager";

    public static boolean setWifiProxy(String proxy, int port, Context context) {

    try {

    Handler handler = new Handler(context.getMainLooper());

    final WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

    if (!manager.isWifiEnabled()) return true;
    List<WifiConfiguration> configurationList = manager.getConfiguredNetworks();
    WifiConfiguration configuration = null;
    int cur = manager.getConnectionInfo().getNetworkId();
    for (WifiConfiguration wifiConfiguration : configurationList) {
    if (wifiConfiguration.networkId == cur)
    configuration = wifiConfiguration;
    }
    if (configuration == null) return true;

    WifiConfiguration config = new WifiConfiguration(configuration);
    config.ipAssignment = WifiConfiguration.IpAssignment.UNASSIGNED;
    config.proxySettings = WifiConfiguration.ProxySettings.STATIC;
    config.linkProperties.clear();

    config.linkProperties.setHttpProxy(new ProxyProperties("127.0.0.1", port, ""));
    manager.updateNetwork(config);

    manager.setWifiEnabled(false);
    handler.postDelayed(new Runnable() {
    @Override
    public void run() {
    manager.setWifiEnabled(true);
    }
    }, 1000);

    networkID = cur;
    } catch (Exception ignored) {
    // Ignore all private API exception
    Log.d(TAG, "Non support API", ignored);
    return false;
    }
    return true;
    }

    public static void clearWifiProxy(Context context) {
    if (networkID == -1) return;
    try {

    Handler handler = new Handler(context.getMainLooper());

    final WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    List<WifiConfiguration> configurationList = manager.getConfiguredNetworks();
    WifiConfiguration configuration = null;
    for (WifiConfiguration wifiConfiguration : configurationList) {
    if (wifiConfiguration.networkId == networkID)
    configuration = wifiConfiguration;
    }
    if (configuration == null) return;

    WifiConfiguration config = new WifiConfiguration(configuration);
    config.ipAssignment = WifiConfiguration.IpAssignment.UNASSIGNED;
    config.proxySettings = WifiConfiguration.ProxySettings.NONE;
    config.linkProperties.clear();

    manager.updateNetwork(config);

    manager.setWifiEnabled(false);
    handler.postDelayed(new Runnable() {
    @Override
    public void run() {
    manager.setWifiEnabled(true);
    }
    }, 1000);

    networkID = -1;
    } catch (Exception ignored) {
    // Ignore all private API exception
    Log.d(TAG, "Non support API", ignored);
    }
    }
    }