Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Show Network Error in android

I have created appliction with webview. if i have do any action and the net is disconnected i want to display one alert. I have tried the following,

added this in oncreate method.

public class AndroidNetTestActivity extends Activity {

    public static WebView webview;
    private Handler mHandler = new Handler();       
    private boolean isConnected = true;
    final String offlineMessageHtml = "Net is disconnected";
    final String timeoutMessageHtml = "Connection timed out";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webview=(WebView)findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true); 
        webview.loadUrl("file:///android_asset/www/index.htm");      
        webview.addJavascriptInterface(new MyJavaScriptInterface(), "Android");
        isConnected=isNetworkAvailable();
        webview.setNetworkAvailable(isConnected);
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                isConnected=isNetworkAvailable();
                if (isConnected) {
                    // return false to let the WebView handle the URL
                    return false;
                } else {
                    // show the proper "not connected" message
                    view.loadData(offlineMessageHtml, "text/html", "utf-8");
                    // return true if the host application wants to leave the current 
                    // WebView and handle the url itself
                    return true;
                }
            }
            @Override
            public void onReceivedError (WebView view, int errorCode, 
                String description, String failingUrl) {
                if (errorCode == ERROR_TIMEOUT) {
                    view.stopLoading();  // may not be needed
                    view.loadData(timeoutMessageHtml, "text/html", "utf-8");
                }
            }
        });
        webview.setWebChromeClient(new WebChromeClient());        
    }

    final class MyJavaScriptInterface
    {
        public void ProcessJavaScript(final String scriptname, final String args)
            {             
                mHandler.post(new Runnable()
                    {
                        public void run()
                            {
                                //ToDo
                            }
                    });
            }
    }  

    public boolean isNetworkAvailable() {
           Context context = getApplicationContext();
           ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
           if (connectivity == null) {
              //boitealerte(this.getString(R.string.alert),"getSystemService rend null");
           } else {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null) {
                 for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                       return true;
                    }
                 }
              }
           }
           return false;
        }
}

if i clicking on the log in button, it should show an error message if net is not available.

but it is not working. please check my code and tell me what i did wrong

like image 557
Ponmalar Avatar asked Apr 08 '26 08:04

Ponmalar


1 Answers

u can check internet connectivity like this

 boolean check=checkConnection();

    if(check==true){
Toast.makeText(
                    this,
                    "Internet is Connected",
                    Toast.LENGTH_LONG).show();
    }

    else{


Toast.makeText(
                    this,
                    "Failed to connect to internet.",
                    Toast.LENGTH_LONG).show();
    }




and here is  a method of checkConnection




  protected boolean checkConnection(){ 
        ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = conMan.getActiveNetworkInfo();

        final boolean connected = networkInfo != null
                && networkInfo.isAvailable()
                && networkInfo.isConnected();

        if ( !connected) {
            Toast.makeText(
                    this,
                    "Failed to connect to internet.",
                    Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }

Just Do like this it is working for me

like image 76
Aamirkhan Avatar answered Apr 10 '26 22:04

Aamirkhan