In my app, I have created an activity where I am using a webview to show one web page. I have created a class named NetworkReceiver which extends BroadcastReceiver. I am using this class to notify the user when there is no internet connection or when connecting again a mobile network or wifi connection. But the problem I am getting the app crashes for this network receiver when changing the network connectivity. Most surprising thing is this does not happen all the time. sometimes the app is completely closed and that time when I try to connect the internet, I am getting app crashing. Here is my complete code for webview activity with network receiver class

```
public class JobPage extends AppCompatActivity {

public static WebView webView;
private static final String URL = "https://.....";

public static boolean refreshDisplay = true;

// The BroadcastReceiver that tracks network connectivity changes.
private NetworkReceiver receiver = new NetworkReceiver();

Constant constant;
SharedPreferences app_preferences;
int appTheme;
int themeColor;
int appColor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.job_layout);

    webView = (WebView) findViewById(R.id.webView);
    webView.loadUrl(URL);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());

    // Registers BroadcastReceiver to track network connection changes.
    IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
    receiver = new NetworkReceiver();
    this.registerReceiver(receiver, filter);

}

@Override
protected void onStop()
{
    unregisterReceiver(receiver);
    super.onStop();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    if (id == android.R.id.home) {
        finish();
    }
    return super.onOptionsItemSelected(item);
}

/**
 * Created by mnowshin on 16/08/2017.
 */

public static class NetworkReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager conn = (ConnectivityManager)
                context.getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = conn.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
            // If device has its Wi-Fi connection, sets refreshDisplay
            // to true. This causes the display to be refreshed when the user
            // returns to the app.

            Toast.makeText(context, "Wi-fi is connected", Toast.LENGTH_SHORT).show();
            //JobPage.refreshDisplay = true;
            webView.reload();

            // If the setting is ANY network and there is a network connection
            // (which by process of elimination would be mobile), sets refreshDisplay to true.
        } else if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
            Toast.makeText(context, "Mobile is connected", Toast.LENGTH_SHORT).show();
            //JobPage.refreshDisplay = true;
            webView.reload();

            // Otherwise, the app can't download content--either because there is no network
            // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there
            // is no Wi-Fi connection.
            // Sets refreshDisplay to false.
        }
        else if (networkInfo != null &&  networkInfo.isConnectedOrConnecting()) {
            Toast.makeText(context, "Data is connected", Toast.LENGTH_SHORT).show();
            //JobPage.refreshDisplay = true;
            webView.reload();
        }
        else {
            refreshDisplay = false;
            Toast.makeText(context, "Your internet connection is not availbale", Toast.LENGTH_SHORT).show();
        }
    }
}

```

}

```
 09-21 15:03:57.500 12346-12346/demo.app.com.bluapp_client_and D/TimaKeyStoreProvider: TimaSignature is unavailable
09-21 15:03:57.500 12346-12346/demo.app.com.bluapp_client_and D/ActivityThread: Added TimaKeyStore provider
09-21 15:03:57.650 12346-12346/demo.app.com.bluapp_client_and D/AndroidRuntime: Shutting down VM
09-21 15:03:57.650 12346-12346/demo.app.com.bluapp_client_and E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                Process: demo.app.com.bluapp_client_and, PID: 12346
                                                                                java.lang.RuntimeException: Unable to start receiver demo.app.com.bluapp_client_and.activity.job.JobPage$NetworkReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.reload()' on a null object reference
                                                                                    at android.app.ActivityThread.handleReceiver(ActivityThread.java:3641)
                                                                                    at android.app.ActivityThread.access$2000(ActivityThread.java:221)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1876)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                    at android.os.Looper.loop(Looper.java:158)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:7225)
                                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                                 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.reload()' on a null object reference
                                                                                    at demo.app.com.bluapp_client_and.activity.job.JobPage$NetworkReceiver.onReceive(JobPage.java:174)
                                                                                    at android.app.ActivityThread.handleReceiver(ActivityThread.java:3634)
                                                                                    at android.app.ActivityThread.access$2000(ActivityThread.java:221) 
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1876) 
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                    at android.os.Looper.loop(Looper.java:158) 
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:7225) 
                                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

```

**Manifest**

```
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="demo.app.com.bluapp_client_and">
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="23" />

...
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
/>

....

    <receiver android:name="demo.app.com.bluapp_client_and.activity.job.JobPage$NetworkReceiver">
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
</application>

```