Um app Android pode precisar do endereço do proxy atual sem possuir as configurações de conexão. Comece pela interface de proxy de rede em vez de procurar qualquer coluna de banco de dados chamada user ou password.

A configuração APN de telefonia descreve o acesso da operadora. Seus campos de conta pertencem a essa configuração. Eles não são um armazenamento geral de credenciais para o proxy HTTP selecionado no Wi-Fi, numa rede gerenciada ou numa conexão privada de um app.

Informação necessáriaConfiguração relevante
Conta de acesso a dados da operadoraConfigurações de APN, com as restrições de acesso da plataforma
Proxy HTTP atual da redeConnectivityManager e ProxyInfo
Login exigido por um proxy selecionadoO fluxo de autenticação suportado pelo cliente e a origem de conta aprovada

Numa versão do Android suportada, ConnectivityManager.getDefaultProxy() retorna as informações de proxy aplicáveis. O resultado pode estar ausente. Um ProxyInfo pode descrever um endpoint direto ou uma configuração PAC, então inspecione a forma antes de tratar cada resultado como par de host e porta.

ProxyInfo não expõe um par universal de usuário e senha. Se o serviço escolhido exigir autenticação, obtenha a conta pretendida pelo arranjo de credenciais suportado pelo app. Um desafio de proxy e um login da operadora podem usar identidades completamente diferentes.

Isso também separa a descoberta do uso. Um socket nativo ou um SDK com transporte próprio não se torna ciente do proxy só porque o app pode ler ProxyInfo. Entregue a rota selecionada a um cliente que suporte o protocolo e o método de autenticação.

Exemplos mais antigos que consultam um provedor de conteúdo de telefonia descrevem versões e permissões específicas do Android. São um contexto histórico útil, mas não podem transformar uma conta APN na senha que falta para um proxy não relacionado.

Artigos relacionados