Skip to content

Instantly share code, notes, and snippets.

@ayoubrem
Last active May 6, 2022 06:45
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ayoubrem/81689ca066f77ecd1ebb5e14de245e6d to your computer and use it in GitHub Desktop.
Save ayoubrem/81689ca066f77ecd1ebb5e14de245e6d to your computer and use it in GitHub Desktop.
Use NetworkCallback In Android
package com.app.demo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NetworkUtil.checkNetworkInfo(this, new NetworkUtil.OnConnectionStatusChange() {
@Override
public void onChange(boolean type) {
if(type){
Toast.makeText(MainActivity.this, "Connection Available", Toast.LENGTH_SHORT).show();
}else Toast.makeText(MainActivity.this, "NO Connection", Toast.LENGTH_SHORT).show();
}
});
}
}
package com.app.demo;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
import androidx.annotation.NonNull;
public class NetworkUtil {
public static void checkNetworkInfo(Context context, final OnConnectionStatusChange onConnectionStatusChange){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities == null){
onConnectionStatusChange.onChange(false);
}
connectivityManager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback(){
@Override
public void onAvailable(@NonNull Network network) {
onConnectionStatusChange.onChange(true);
}
@Override
public void onLost(@NonNull Network network) {
onConnectionStatusChange.onChange(false);
}
});
}
//for android version below Nougat api 24
else {
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
onConnectionStatusChange.onChange(networkInfo!= null && networkInfo.isConnectedOrConnecting());
}
}
interface OnConnectionStatusChange{
void onChange(boolean type);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment