C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Android Network Connectivity ServicesAndroid network connectivity services allow us to check the network connectivity information of the device. It is very important to check the internet connection of the device while performing the task which is based on internet service such as fetching data from the server (internet) or writing data to the server. Using Android Network Connectivity Services we can also determine the types of a network of android device. It may be of types TYPE_WIFI (wifi), TYPE_MOBILE (mobile), TYPE_BLUETOOTH (Bluetooth), etc. Android Network Connectivity Service ExampleLet's create a simple example to check the network connectivity of the device as well as its type. To access the network connectivity of a device, we need to provide the network access permission in AndroidMenifest.xml file. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> In the activity_main.xml file of layout add the following code. For accessing the network state of a device, there is no requirement of the layout file. Here, we are using the activity_main.xml file only for storing the state of network type. activity_main.xml<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="example.TheDeveloperBlog.com.networkconnectivityservice.MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:contentDescription="networkstate" android:text="Network state ?" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.183" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:text="Check Connection Type" android:layout_marginTop="392dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> Create a java class named as NetworkState.java. This class contains a getConnectivityStatus() method which returns the constant integer value on the basis of current network connection. The code context.getSystemService(Context.CONNECTIVITY_SERVICE) is used to return the instance of the ConnectivityManager class which access the network properties. NetworkState.javapackage example.TheDeveloperBlog.com.networkconnectivityservice; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class NetworkState { public static int TYPE_NOT_CONNECTED = 0; public static int TYPE_WIFI = 1; public static int TYPE_MOBILE = 2; public static int getConnectivityStatus(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); if (null != activeNetwork) { if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) return TYPE_WIFI; if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) return TYPE_MOBILE; } return TYPE_NOT_CONNECTED; } public static String getConnectivityStatusString(Context context) { int conn = NetworkState.getConnectivityStatus(context); String status = null; if (conn == NetworkState.TYPE_WIFI) { status = "Wifi enabled"; } else if (conn == NetworkState.TYPE_MOBILE) { status = "Mobile data enabled"; } else if (conn == NetworkState.TYPE_NOT_CONNECTED) { status = "Not connected to Internet"; } return status; } } Create a receiver class named as NetworkReceiver.java and extends the BroadcastReciever class. This class handles the changes occur in the network state of a device. The onReceive() method of BroadcastReciever class called when the network state of device changes. NetworkReceiver.javapackage example.TheDeveloperBlog.com.networkconnectivityservice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class NetworkReceiver extends BroadcastReceiver { static String status =null; @Override public void onReceive(Context context, Intent intent) { status = NetworkState.getConnectivityStatusString(context); Toast.makeText(context, status, Toast.LENGTH_LONG).show(); if(status == "Wifi enabled"){ //your code when wifi enable } else if(status=="Mobile data enabled"){ //your code when TYPE_MOBILE network enable } else if(status=="Not connected to Internet"){ //your code when no network connected } } } In the MainActivity.java class, we are displaying the network state of a device in TextView by clicking the Button. MainActivity.javapackage example.TheDeveloperBlog.com.networkconnectivityservice; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Button button; TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = findViewById(R.id.button); textView = findViewById(R.id.textView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NetworkReceiver receiver = new NetworkReceiver() ; String networkStatus = receiver.status; textView.setText("connection type: "+networkStatus); Toast.makeText(getApplicationContext(), networkStatus, Toast.LENGTH_LONG).show(); } }); } } In the AndroidMenifest.xml file, add the network access permission and receiver class that handles the changes occur in BroadcastReceiver class. AndroidMenifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="example.TheDeveloperBlog.com.networkconnectivityservice"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".NetworkReceiver" android:enabled="true"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> </intent-filter> </receiver> </application> </manifest> Output
Next TopicFirebase Authentication - Google Login
|