为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

手掌心 2021-04-07 13:14:27
当连接恢复时,我想运行此任务,我想调用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/");    }}
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

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


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.

    }


    }

}


查看完整回答
反对 回复 2021-04-21
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信