Reputation: 77904
I'm looking for best technique to verify internet over WiFi or Cell. Let's say you are connected to some AP but you don't now if internet exists.
Today I have 2 options by using HttpURLConnection
:
Any other ways?
All suggestions would be appreciated.
Upvotes: 2
Views: 242
Reputation: 1398
Here it is:
to see the state of the data connection on the cell network
and for the WIFI, I would use this public class WifiInfo. From there you can use getIpAddress() or getDetailedStateOf(...) Hope it's helpful.
Upvotes: 0
Reputation: 2872
On some level, 'ability to access internet endpoints' is equivalent to 'having internet access'. You could consider some algorithm:
for (Endpoint site : theEntireInternet) {
if (can connect to site) return true;
}
return false;
which will conclusively establish connectivity. In other words, being able to connect to any one site is sufficient positive proof, but theoretically you would need to enumerate every site to prove non-connectivity. In practice, checking a few major sites is obviously sufficient. Otherwise (without some sort of meta-information about networks, ISPs, etc; which is unavailable) there's no way to conclusively demonstrate "internet" connectivity other than... connecting to the internet.
Of course as you comment, checking various internet-based applications can't hurt either; it's just a different form of an equivalent technique.
Upvotes: 1
Reputation: 14808
See the Telephony Manager and it's getDataSate() method it has four state
DATA_DISCONNECTED
DATA_CONNECTING
DATA_CONNECTED
DATA_SUSPENDED
You can get the instance of telephony manager --
TelephonyManager tm = (TelephonyManager)getSystemService(Telephony_Service);
Upvotes: 1