亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

互聯網連接更改時自動重新加載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的實現。


可能看起來像這樣?;顒樱?/p>


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 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號