gpt4 book ai didi

java - 互联网连接更改时自动重新加载 webview

转载 作者:行者123 更新时间:2023-12-05 00:21:19 28 4
gpt4 key购买 nike

当连接恢复时,我想运行这个任务,我想调用 NewortchangeReceiver() 构造函数。我在 Mainactivity IntentFilter 中写了“android.net.conn.CONNECTIVITY_CHANGE”,因为“android.net.conn.CONNECTIVITY_CHANGE”在 androidn (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/");
}

}

最佳答案

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

网络更改接收器:

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 应该调用 setConnectionChangeCallback 在 BraodCastReceiver 即 NetworkChangeReceiver 的对象上并提供 ConnectionChangeCallback 的实现。

这可能看起来像这样。
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.
}

}
}

关于java - 互联网连接更改时自动重新加载 webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51007770/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com