am checking whether there is a network connection available in android. When the connection is lost or is unavailable a Dialog with a custom layout shows. when the connection is available again the dialog dismisses.
The app is crushing and am having an error that says only the original thread that created a view can touch its views
Declaring my dialog
private Dialog connectionDialog;
My dialog code inside onCreate method in activity
connectionDialog = new Dialog(this, android.R.style.Theme_NoTitleBar_Fullscreen);
connectionDialog.setContentView(R.layout.layout_connection_dialog);
connectionDialog.setCancelable(false);
Checking network connection availability code
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
NetworkRequest networkRequest = new NetworkRequest.Builder().build();
networkCallback = new ConnectivityManager.NetworkCallback(){
@Override
public void onUnavailable() {
super.onUnavailable();
connectionDialog.show();
}
@Override
public void onLost(@NonNull Network network) {
super.onLost(network);
connectionDialog.show();
}
@Override
public void onAvailable(@NonNull Network network) {
super.onAvailable(network);
if (connectionDialog.isShowing()){
connectionDialog.dismiss();
}
}
};
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
}
onStop method
@Override
protected void onStop() {
super.onStop();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
connectivityManager.unregisterNetworkCallback(networkCallback);
}
}
The error am getting
E/AndroidRuntime: FATAL EXCEPTION: main
Process: manu.apps.prochama, PID: 15785
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8632)
at android.view.ViewRootImpl.doDie(ViewRootImpl.java:7435)
at android.view.ViewRootImpl.die(ViewRootImpl.java:7410)
at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:520)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:451)
at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:210)
at android.app.Dialog.dismissDialog(Dialog.java:577)
at android.app.-$$Lambda$oslF4K8Uk6v-6nTRoaEpCmfAptE.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)