Como saber se 'Mobile Network Data' está ativado ou desativado (mesmo quando conectado por WiFi)?
Eu tenho um aplicativo que eu quero poder usar para obter um relatório de status de conexão de uma consulta remota.
Quero saber se o WiFi está conectado e se o acesso a dados está ativado pela rede móvel.
Se o WiFi ficar fora de alcance, quero saber se posso confiar na rede móvel.
O problema é que os dados ativados sempre são retornados como verdadeiros quando estou conectado por WiFi e só posso consultar corretamente a rede móvel quando não estiver conectado por WiFi.
Todas as respostas que tenho visto sugerem polling para ver qual é a conexão atual, mas eu quero saber se a rede móvel está disponível, caso eu precise, mesmo que eu possa estar conectado por WiFi no momento.
Existe alguma maneira de dizer se os dados da rede móvel estão habilitados sem pesquisa para ver se está conectado?
EDITAR
Então, quando conectado por WiFi Se eu vou para as configurações e desmarque 'Data Enabled' e, em seguida, no meu aplicativo eu faço isso:
boolean mob_avail =
conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
mob_avail é retornado como 'true', mas eu desabilitei dados da rede móvel, portanto, seria de esperar que fosse 'falso'
Se eu desligar o WiFi, não haverá (corretamente) nenhuma conexão, já que desativei os dados da rede móvel.
Então, como faço para verificar se os dados da rede móvel estão ativados quando estou conectado por WiFi?
ATUALIZAR
Eu dei uma olhada em getAllNetworkInfo (), como sugerido nos comentários por ss1271
Eu enviei as informações retornadas sobre a rede móvel sob as 3 condições a seguir
WiFi desativado - dados móveis em
WiFi ligado - dados móveis desativados
WiFi ligado - dados móveis em
e obteve os seguintes resultados:
Com WiFi desligado:
mobile [HSUPA], estado: CONNECTED / CONNECTED, razão: desconhecido, extra: internet, roaming: false, failover: falso, isAvailable: true, featureId: -1, userDefault: false
Com WiFi ligado / celular desligado
NetworkInfo: tipo: mobile [HSUPA], estado: DISCONNECTED / DISCONNECTED, razão: connectionDisabled, extra: (nenhum), roaming: false, failover: falso, isAvailable: true, featureId: -1, userDefault: false
Com WiFi ligado / celular ligado
NetworkInfo: tipo: mobile [HSPA], estado: DISCONNECTED / DISCONNECTED, razão: connectionDisabled, extra: (nenhum), roaming: false, failover: falso, isAvailable: true, featureId: -1, userDefault: false
Então, como você pode ver isAvailable retornou true toda vez, e state apenas mostrou como Disconnected quando WiFi estava em efeito.
ESCLARECIMENTO
eu souNÃO procurando ver se meu telefone está conectado atualmente pela Rede Móvel. EuSOU tentando estabelecer se o usuário ativou / desativou o acesso a dados pela rede móvel. Eles podem ativar e desativar isso indo para Configurações -> Configurações de rede e sem fio -> Configurações de rede móvel -> Dados ativados