I am attempting to check for an internet connection with a NetworkCallBack. However, my code returns weird results. Please assist. Any help will be appreciated.
CheckNetwork.java
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkRequest;
import android.os.Build;
import android.util.Log;
import androidx.annotation.RequiresApi;
public class CheckNetwork {
private Context context;
public CheckNetwork(Context context) {
this.context = context;
}
@RequiresApi(api = Build.VERSION_CODES.N)
public void registerNetworkCallback()
{
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
connectivityManager.registerDefaultNetworkCallback( new ConnectivityManager.NetworkCallback(){
@Override
public void onAvailable(Network network) {
Log.d("available", "internet");
Variables.isNetworkConnected = true;
Log.d("Net_Var_In", String.valueOf(Variables.isNetworkConnected));
}
@Override
public void onLost(Network network) {
Log.d("not_av", "internet");
Variables.isNetworkConnected = false;
}
}
);
}catch (Exception e){
e.printStackTrace();
Variables.isNetworkConnected = false;
}
Log.d("Net_Var_End", String.valueOf(Variables.isNetworkConnected));
}
}
MainActivity.java
CheckNetwork checkNetwork = new CheckNetwork(getApplicationContext());
checkNetwork.registerNetworkCallback();
Log.d("Net_Var_Main", String.valueOf(Variables.isNetworkConnected));
if(Variables.isNetworkConnected)
{
Log.d("Internet", "available");
}
else
{
setContentView(R.layout.activity_internet);
return false;
}
Logcat:
When internet is connected/available: (Even though it prints that internet is available, it still goes to layout_internet..which is the layout for when internet is NOT available)
2020-07-17 14:07:09.735 3671-3671/com.example.scrollingtext D/Net_Var_End: false
2020-07-17 14:07:09.735 3671-3671/com.example.scrollingtext D/Net_Var_Main: false
2020-07-17 14:07:09.794 3671-3671/com.example.scrollingtext W/e.scrollingtex: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-07-17 14:07:09.795 3671-3671/com.example.scrollingtext W/e.scrollingtex: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-07-17 14:07:09.816 3671-3702/com.example.scrollingtext D/available: internet
2020-07-17 14:07:09.816 3671-3702/com.example.scrollingtext D/Net_Var_In: true
When internet is not connected/available: (Even though it prints that internet is available, it still goes to layout_internet..which is the layout for when internet is NOT available)
2020-07-17 14:09:31.611 3744-3744/com.example.scrollingtext D/Net_Var_End: false
2020-07-17 14:09:31.611 3744-3744/com.example.scrollingtext D/Net_Var_Main: false
2020-07-17 14:09:31.663 3744-3744/com.example.scrollingtext W/e.scrollingtex: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-07-17 14:09:31.663 3744-3744/com.example.scrollingtext W/e.scrollingtex: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-07-17 14:09:31.678 3744-3776/com.example.scrollingtext D/available: internet
2020-07-17 14:09:31.678 3744-3776/com.example.scrollingtext D/Net_Var_In: true
EDIT
Based on CheckNetwork.java, which monitors the state of the network using a NetworkCallBack..how would you go about changing layout in front of the users screen when OnAvailable() and OnLost() is run? I would like to open layout_internet when OnLost() is run...and then layout_activity_main when OnAvailable is run. This needs to happen from within CheckNetwork. So, it seems that I am looking for access to setContentView (which is only available in MainActivity) from OnAvailable or OnLost. Or is there another way that I can open layout_internet and layout_activity_main when internet is available/lost?