Skip to content

Instantly share code, notes, and snippets.

@vidyesh95
Created February 22, 2020 15:50
Show Gist options
  • Save vidyesh95/ebeb70598c7cc050d8615b36412faa99 to your computer and use it in GitHub Desktop.
Save vidyesh95/ebeb70598c7cc050d8615b36412faa99 to your computer and use it in GitHub Desktop.
Check whether device is receiving data or not always while app is running...
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkRequest;
import android.os.Build;
import android.os.Bundle;
import com.google.android.material.snackbar.Snackbar;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
CoordinatorLayout coordinatorLayout;
ConnectivityManager connectivityManager;
ConnectivityManager.NetworkCallback networkCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = findViewById(R.id.coordinator_layout);
connectivityManager = (ConnectivityManager) getApplicationContext()
.getSystemService(CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
NetworkRequest networkRequest = new NetworkRequest.Builder().build();
networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
// When Network connection is back
if (isInternetAccessAvailable()) {
Snackbar mySnackbar = Snackbar.make(coordinatorLayout,
"Connected",
Snackbar.LENGTH_LONG).setBackgroundTint(getResources()
.getColor(R.color.green));
mySnackbar.show();
} else if (!isInternetAccessAvailable()){
Snackbar mySnackbar = Snackbar.make(coordinatorLayout,
"No Internet Access",
Snackbar.LENGTH_INDEFINITE)
.setBackgroundTint(getResources().getColor(R.color.red));
mySnackbar.show();
}
}
@Override
public void onLost(@NonNull Network network) {
// Called when the framework has a hard loss of the network or when the graceful
// failure ends.
if (isInternetAccessAvailable()) {
Snackbar mySnackbar = Snackbar.make(coordinatorLayout,
"Connected",
Snackbar.LENGTH_LONG).setBackgroundTint(getResources()
.getColor(R.color.green));
mySnackbar.show();
} else if (!isInternetAccessAvailable()){
Snackbar mySnackbar = Snackbar.make(coordinatorLayout,
"No Internet Access",
Snackbar.LENGTH_INDEFINITE)
.setBackgroundTint(getResources().getColor(R.color.red));
mySnackbar.show();
}
}
};
// Register Callback and network request
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
}
}
public boolean isInternetAccessAvailable() {
if (!isConnectedToThisServer("8.8.8.8")) {
return isConnectedToThisServer("180.76.76.76");
} else {
return true;
}
}
public boolean isConnectedToThisServer(String host) {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 " + host);
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return false;
}
@Override
public void onStop() {
// Unregister callback on closing activity
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
connectivityManager.unregisterNetworkCallback(networkCallback);
}
super.onStop();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment