Last active
May 6, 2022 06:45
-
-
Save ayoubrem/81689ca066f77ecd1ebb5e14de245e6d to your computer and use it in GitHub Desktop.
Use NetworkCallback In Android
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
}); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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