Created
February 22, 2020 15:50
-
-
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...
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
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