互联网连接更改时自动重新加载Webview [英] Automatic reload webview when internet connection change

查看:158
本文介绍了互联网连接更改时自动重新加载Webview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

When connection get back I want to run this task, I want to call NewortchangeReceiver() constructor. I wrote "android.net.conn.CONNECTIVITY_CHANGE" in Mainactivity IntentFilter because "android.net.conn.CONNECTIVITY_CHANGE" not work in androidmanifest.xml in android N (7). I want to automatic reload webview at internet connection change.

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/");
    }

}

推荐答案

我从您的问题中得到的是,当连接性发生变化时,您希望获得回调. 所以我会回答的.

What I get from your question is that you want to get callback when there is change in connectivity. So I'll answer for that.

NetworkChangeReceiver:

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);

    }


}

现在,您的活动应在BraodCastReceiver(即NetworkChangeReceiver的对象)上调用 setConnectionChangeCallback ,并提供 ConnectionChangeCallback 的实现.

Now your Activity should call setConnectionChangeCallback on BraodCastReceiver ie NetworkChangeReceiver's object and provide ConnectionChangeCallback's implementation.

可能看起来像这样. 活动:

Which may look like this. Activity:

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.
    }

    }
}

这篇关于互联网连接更改时自动重新加载Webview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆