Reputation: 1671
i have this android application that requires to load data from a remote server via the internet. this update-functionaliy obviously requires the device to not only be connected to some kind of network, but also to the internet.
so: is want to schedule the update-service to some date and when it starts, it should determine whether it actually CAN reach the target server or not. therefore, a simple "is the device connected to wifi?" does not suffice, as the device may be connected to a wireless network that does not offer internet access. something like a PING is required...
whats the easiest / best way to determine, if there is an internet connection is available i.e. server is reachable?
Upvotes: 3
Views: 1743
Reputation: 235
Here is the best answer to problem:
Device is connected on router but there is no internet gateway active.
Upvotes: 0
Reputation: 26271
boolean connected;
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to the internet
connected = true;
}
else
connected = false;
add persmission: <uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
Upvotes: 4
Reputation: 39605
Take a look at this answer here on StackOverflow. It should be just what you are looking for.
Upvotes: 1
Reputation:
Just try to connect to your server, and timeout if you haven't started download progress in an acceptable period of time.
Upvotes: 2