0

I am just trying to convert my blog into an app. Everything goes well but i got stuck at one point. When there is no internet available it shows the custom message but it happens only when the app is launched. I mean when i turn off the wifi / mobile net after launching the app it displays "Web page not available" and my URL.

My code is:

public class MainActivity extends AppCompatActivity {

    WebView webView;
    RelativeLayout relativeLayout;
    Button btnNoInternetConnection;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.myWebView);
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);
        btnNoInternetConnection = (Button) findViewById(R.id.btnNoConnection);
        relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
        checkConnection();
        btnNoInternetConnection.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                checkConnection();

            }
        });
    }

    @Override
    public void onBackPressed() {
        final WebView WebView = webView;
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }

    public void checkConnection() {
        ConnectivityManager connectivityManager = (ConnectivityManager)
                this.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        NetworkInfo mobileNetwork = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isConnected()) {
            webView.loadUrl("http://www.abc.blogspot.com");
            webView.setVisibility(View.VISIBLE);
            relativeLayout.setVisibility(View.GONE);

        } else if (mobileNetwork.isConnected()) {
            webView.loadUrl("http://www.abc.blogspot.com");
            webView.setVisibility(View.VISIBLE);
            relativeLayout.setVisibility(View.GONE);

        } else {
            webView.setVisibility(View.GONE);
            relativeLayout.setVisibility(View.VISIBLE);

        }
    }
}
James Z
  • 12,104
  • 10
  • 27
  • 43
  • Try registering a [listener for your internet connectivity](https://stackoverflow.com/q/25678216/16653700) and using `checkConnection()` in there. I think `checkConnection()` is what causes the correct message to display onlywhen your app opens(since it's in your `onCreate()`). You have a button that calls `checkConnection()` how is it used? – Alias Cartellano Feb 01 '22 at 21:04

0 Answers0