互联网连接更改时自动重新加载Webview

当连接恢复时,我想运行此任务,我想调用NewortchangeReceiver()构造函数。我在Mainactivity IntentFilter中写了“ android.net.conn.CONNECTIVITY_CHANGE”,因为“ android.net.conn.CONNECTIVITY_CHANGE”在android N(7)的androidmanifest.xml中不起作用。我想在互联网连接更改时自动重新加载webview。


protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    wvDailyDarshan = (WebView) findViewById(R.id.wvDailyDarshan);

    progressBar = (ProgressBar) findViewById(R.id.progressBar);


    IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");

    context.registerReceiver(new NetworkChangeReceiver(), intentFilter);


    Boolean connection = isNetworkConnected();

    if (connection == false) {

        Snackbar.make(this.getWindow().getDecorView().findViewById(android.R.id.content), "Please check your Internet Connection", Snackbar.LENGTH_SHORT).show();

    } else if (connection == true) {

        wvDailyDarshan.getSettings().setJavaScriptEnabled(true);

        //wvDailyDarshan.loadUrl("http://www.swaminarayanbhagwan.com/daily-darshan/");


        wvDailyDarshan.setWebViewClient(new myWebClient());

        wvDailyDarshan.getSettings().setJavaScriptEnabled(true);

        wvDailyDarshan.getSettings().setBuiltInZoomControls(true);

        wvDailyDarshan.getSettings().setDisplayZoomControls(false);

        wvDailyDarshan.loadUrl("https://www.google.co.in/");

    }

}


手掌心
浏览 180回答 2
2回答

BIG阳

我从您的问题中得到的是,当连接性发生变化时,您希望获得回调。所以我会回答。NetworkChangeReceiver:public class NetworkChangeReceiver extends BroadcastReceiver {    ConnectionChangeCallback connectionChangeCallback;    @Override    public void onReceive(Context context, Intent intent) {        ConnectivityManager cm = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();        boolean isConnected = activeNetwork != null                && activeNetwork.isConnectedOrConnecting();        if (connectionChangeCallback != null) {            connectionChangeCallback.onConnectionChange(isConnected);        }    }    public void setConnectionChangeCallback(ConnectionChangeCallback                                                    connectionChangeCallback) {        this.connectionChangeCallback = connectionChangeCallback;    }    public interface ConnectionChangeCallback {        void onConnectionChange(boolean isConnected);    }}现在,您的Activity应该在BraodCastReceiver上调用setConnectionChangeCallback,即NetworkChangeReceiver的对象,并提供ConnectionChangeCallback的实现。可能看起来像这样。活动:public class YourActivity implments NetworkChangeReceiver.ConnectionChangeCallback{@Override    protected void onCreate(Bundle savedInstanceState) {        .....        IntentFilter intentFilter = new         IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");        NetworkChangeReceiver networkChangeReceiver = new NetworkChangeReceiver();        registerReceiver(networkChangeReceiver, intentFilter);        networkChangeReceiver.setConnectionChangeCallback(this);    }    @Override    public void onConnectionChange(boolean isConnected) {    if(isConnected){    // will be called when internet is back    }    else{    // will be called when internet is gone.    }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java