package com.permissionnanny.demo.wifi; import android.app.Dialog; import android.content.Context; import android.util.SparseArray; import com.permissionnanny.demo.DataAdapter; import com.permissionnanny.demo.ResponseDisplayListener; import com.permissionnanny.demo.SimpleRequestFactory; import com.permissionnanny.demo.extra.BooleanExtra; import com.permissionnanny.demo.extra.Extra; import com.permissionnanny.demo.extra.ExtrasDialogBuilder; import com.permissionnanny.demo.extra.IntegerExtra; import com.permissionnanny.lib.request.simple.SimpleRequest; import com.permissionnanny.lib.request.simple.WifiRequest; /** * */ public class WifiRequestFactory implements SimpleRequestFactory { private String[] mLabels = new String[]{ WifiRequest.ADD_NETWORK, WifiRequest.DISABLE_NETWORK, WifiRequest.DISCONNECT, WifiRequest.ENABLE_NETWORK, WifiRequest.GET_CONFIGURED_NETWORKS, WifiRequest.GET_CONNECTION_INFO, WifiRequest.GET_DHCP_INFO, WifiRequest.GET_SCAN_RESULTS, WifiRequest.GET_WIFI_STATE, WifiRequest.IS_WIFI_ENABLED, WifiRequest.PING_SUPPLICANT, WifiRequest.REASSOCIATE, WifiRequest.RECONNECT, WifiRequest.REMOVE_NETWORK, WifiRequest.SAVE_CONFIGURATION, WifiRequest.SET_WIFI_ENABLED, WifiRequest.START_SCAN, WifiRequest.UPDATE_NETWORK, }; private SparseArray<Extra[]> mExtras = new SparseArray<Extra[]>() {{ put(1, new Extra[]{new IntegerExtra()}); put(3, new Extra[]{new IntegerExtra(), new BooleanExtra()}); put(13, new Extra[]{new IntegerExtra()}); put(15, new Extra[]{new BooleanExtra()}); }}; private SparseArray<String[]> mExtrasLabels = new SparseArray<String[]>() {{ put(0, new String[]{"wifiConfiguration"}); put(1, new String[]{"netId"}); put(3, new String[]{"netId", "disableOthers"}); put(13, new String[]{"netId"}); put(15, new String[]{"enabled"}); put(17, new String[]{"wifiConfiguration"}); }}; private ExtrasDialogBuilder mBuilder = new ExtrasDialogBuilder(); @Override public SimpleRequest getRequest(int position, DataAdapter adapter) { return getRequest(position).listener(new ResponseDisplayListener(position, adapter)); } public WifiRequest getRequest(int position) { Extra[] extras = mExtras.get(position); switch (position) { case 0: return WifiRequest.addNetwork(null); case 1: return WifiRequest.disableNetwork((int) extras[0].getValue()); case 2: return WifiRequest.disconnect(); case 3: return WifiRequest.enableNetwork((int) extras[0].getValue(), (boolean) extras[1].getValue()); case 4: return WifiRequest.getConfiguredNetworks(); case 5: return WifiRequest.getConnectionInfo(); case 6: return WifiRequest.getDhcpInfo(); case 7: return WifiRequest.getScanResults(); case 8: return WifiRequest.getWifiState(); case 9: return WifiRequest.isWifiEnabled(); case 10: return WifiRequest.pingSupplicant(); case 11: return WifiRequest.reassociate(); case 12: return WifiRequest.reconnect(); case 13: return WifiRequest.removeNetwork((int) extras[0].getValue()); case 14: return WifiRequest.saveConfiguration(); case 15: return WifiRequest.setWifiEnabled((boolean) extras[0].getValue()); case 16: return WifiRequest.startScan(); case 17: return WifiRequest.updateNetwork(null); } return null; } @Override public int getCount() { return mLabels.length; } @Override public String getLabel(int position) { return mLabels[position]; } @Override public boolean hasExtras(int position) { return mExtras.get(position) != null; } @Override public Dialog buildDialog(Context context, int position) { return mBuilder.build(context, mExtras.get(position), mExtrasLabels.get(position)); } }