Monday 23 October 2017

Detect whether there is an Internet connection available on Android





I need to detect whether the Android device is connected to the
Internet.



The
NetworkInfo class provides a non-static method
isAvailable() that sounds
perfect.



Problem is
that:



NetworkInfo ni = new
NetworkInfo();
if (!ni.isAvailable()) {
// do
something

}


throws
this error:



The constructor NetworkInfo is not
visible.


Safe bet is
there is another class that returns a NetworkInfo object. But I
don't know
which.





  1. How to
    get the above snippet of code to work?

  2. How could I have
    found myself the information I needed in the online
    documentation?

  3. Can you suggest a better way for this type
    of detection?


class="post-text" itemprop="text">
class="normal">Answer



The
getActiveNetworkInfo() method of
ConnectivityManager returns a
NetworkInfo instance representing the first connected network
interface it can find or null if none of the interfaces are
connected. Checking if this method returns null should be
enough to tell if an internet connection is available or
not.



private boolean
isNetworkAvailable() {
ConnectivityManager connectivityManager


= (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo
= connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo !=
null &&
activeNetworkInfo.isConnected();
}


You
will also
need:



            android:name="android.permission.ACCESS_NETWORK_STATE"
/>



in
your android
manifest.



Edit:



Note
that having an active network interface doesn't guarantee that a particular networked
service is available. Network issues, server downtime, low signal, captive portals,
content filters and the like can all prevent your app from reaching a server. For
instance you can't tell for sure if your app can reach Twitter until you receive a valid
response from the Twitter service.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...