9
respostas

Como posso setar um proxy em conexão wifi?

Amigos, estou tentando montar um app para configurar automaticamente um proxy, porta, e bypass de numa rede wirelles especifica.

Consegui realizar essa configuração com auxilio de códigos de exemplo porém só funciona até a API Level 22, acima dela não consegui realizar a configuração.

Tentei utilizar ProxyInfo() em WifiConfiguration, porém o android studio informa que o mesmo é valido somente na API Level 26.

Alguém pode me dar uma ajuda? Indicar um caminho a seguir.

9 respostas

Adalto, tudo bem ?

Provavelmente algum dos métodos que está usando só foi implementando nessa versão.

Dá uma olhadinha nisso :

https://developer.android.com/reference/android/net/wifi/WifiConfiguration.html

Você consegue ir vendo quais métodos foram inseridos conforme as apis avançaram.

Oi Mateus, tudo certo! Obrigado pelo rápido retorno.

Eu olhei essa documentação já, estava filtrando a API e observei que os métodos que citei estavam disponíveis na API 23 porém meu androidstudio reclama e diz que os métodos estão disponíveis apenas na API do 26.

Estou buscando na internet alguma estratégia mas ainda não consigo nada. Será que existe alguma coisa de errado com meu andoidstudio?

Dúvido que seja com o AndroidStudio, ainda acredito que você possa estar invocando alguma coisa, ainda que não dessa classe, que só está disponível na api 26.

Oi Matheus,

Estou realizando somente um teste simples. Veja:

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Context mActivity = this;

        ConnectivityManager cm = (ConnectivityManager) this
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        WifiManager wifiMgr = (WifiManager) mActivity
                .getSystemService(Context.WIFI_SERVICE);

        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();

        try {
            WifiConfiguration wifiConfig =  wifiMgr.getConfiguredNetworks().get(0);
          ProxyInfo inf = wifiConfig.getHttpProxy();
        } catch (Exception e) {
            e.printStackTrace();
        }

        setContentView(R.layout.activity_main);
    }

Quando faço :

ProxyInfo inf = wifiConfig.getHttpProxy();

Recebo erro referente a API Level.

https://developer.android.com/reference/android/net/ProxyInfo.html

Essa classe pede api 21 no mínimo.

Veja como aparece na minha IDE https://goo.gl/kEw2gB

Parece que esse método em especifico é só para a última versão do android. Que bizarro, será que não existe um similar ?

Oi Matheus,

Pois é cara ainda não consegui encontrar nada.. Nenhuma abordagem diferente dessa.

Tem alguma ideia? alguma dica?

Matheus,

Encontrei uma informação importante, justamente a partir da API Level que estou com problema o Google modificou o comportamento do Andoird veja:

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-network

Wi-Fi and Networking Changes This release introduces the following behavior changes to the Wi-Fi and networking APIs.

Your apps can now change the state of WifiConfiguration objects only if you created these objects.
 You are not permitted to modify or delete WifiConfiguration objects created by the user or by other apps.

Preciso ver como proceder a partir de agora como posso criar e modificar uma conexão wifi.