Viac na
zistenie, či je v systéme Android k dispozícii internetové pripojenie
Potrebujem zistiť, či je zariadenie so systémom Android pripojené k internetu.
Trieda NetworkInfo
poskytuje nestatickú metódu isAvailable()
, ktorá znie perfektne.
Problémom je, že:
NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
// do something
}
vyhodí túto chybu:
The constructor NetworkInfo is not visible.
Vsadíme sa, že existuje iná trieda, ktorá vracia objekt NetworkInfo
. Ale neviem, ktorá to je.
- Ako dosiahnuť, aby uvedený úryvok kódu fungoval?
- Ako som si mohol nájsť potrebné informácie v online dokumentácii?
- Môžete navrhnúť lepší spôsob tohto typu detekcie?
665
3
Metóda
getActiveNetworkInfo()
aplikácieConnectivityManager
vráti inštanciuNetworkInfo
, ktorá predstavuje prvé pripojené sieťové rozhranie, ktoré nájde, alebonull
, ak nie je pripojené žiadne z rozhraní. Kontrola, či táto metóda vrátinull
, by mala stačiť na zistenie, či je internetové pripojenie k dispozícii alebo nie.Budete tiež potrebovať:
vo vašom android manifeste.
Upraviť:
Upozorňujeme, že existencia aktívneho sieťového rozhrania nezaručuje dostupnosť konkrétnej sieťovej služby. Problémy so sieťou, výpadky servera, slabý signál, skryté portály, filtre obsahu a podobne môžu zabrániť vašej aplikácii dosiahnuť server. Napríklad nemôžete s istotou povedať, či vaša aplikácia môže dosiahnuť Twitter, kým nedostanete platnú odpoveď od služby Twitter.
Ďalšia dôležitá poznámka. Aby to fungovalo, musíte v súbore AndroidManifest.xml nastaviť
android.permission.ACCESS_NETWORK_STATE
.Stačí si dostatočne prečítať dokumentáciu tried a nájdete'všetky odpovede, ktoré hľadáte. Pozrite si dokumentáciu k triede ConnectivityManager. V popise sa dozviete, čo máte robiť.
Pravdepodobne som sa našiel: