Wiem, że istnieje sposób, aby dowiedzieć się, czy sieć Wi-Fi jest portalem przechwytującym, sprawdzając odpowiedź podobną do takiej, jak "http://clients3.google.com/generate_204"
.Jak poznać podłączone Wi-Fi to Walled Gardened (Captive Portal)?
Ale moje pytanie jest nieco inne. Wszyscy wiemy, że na Androidzie, gdy łączymy się z siecią Wi-Fi, cykl połączenia przechodzi przez szereg stanów wymienionych w klasie NetworkInfo.DetailedState, takich jak AUTHENTICATING
, OBTAINING_IPADDR
, VERIFYING_POOR_LINK
itd. Ponadto jednym ze stanów jest CAPTIVE_PORTAL_CHECK
i system androidowy sprawdzający, czy łączona sieć jest w niewoli lub nie. W tym Android używa CaptivePortalTracker#isCaptivePortal(InetAddress server), co powoduje, że boolean
. Więc jesteśmy pewni, że Android wie, czy połączenie jest ograniczone (captive) czy nie
Moje pytanie brzmi: czy system Android daje jakieś połączenie zwrotne lub jakiś stan, dzięki któremu możemy poznać portal Sieć jest zmonopolizowany bez sprawdzania to ręcznie? Skoro system Android już sprawdził sieć dla portalu przechwytującego, czy musimy zrobić to samo ponownie?
P.S. Celuję tylko w interfejs API 19 (KitKat 4.4.2).
Dzięki @ isma3l, to sprawdzi i powrócić z jednym więcej dzięki :-) –
Hi @ isma3l ta wymaga API 23 (Marshmallow) do pracy. Czy mamy coś takiego w poprzednich wersjach? –
@AnasAzeem zobacz edytuj – isma3l