这是我的第一个将WebView用于我的网页的应用程序。
我想知道如何从webview获取当前网址,我正在使用它:
SessionDetector session = new SessionDetector(this);
webView = (WebView) findViewById(R.id.content);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl(AppWebViewUrls.getBaseUrl());
session.start();
此类用于获取当前网址:
class SessionDetector extends Thread {
private boolean isLogged = false;
private MainActivity context;
SessionDetector(MainActivity context) {
this.context = context;
}
@Override
public void run() {
while (!isLogged) {
if (context.webView.getUrl().contains("cpanel")) {
isLogged = true;
}
}
context.createMenu();
}
}
但是,Android会抛出一个异常,并显示“必须在同一个线程上调用所有webview方法”。
我很高兴知道这个错误的原因是什么以及为什么。
答案 0 :(得分:0)
我发现shouldOverrideUrlLoading方法适用于我的情况。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
super.shouldOverrideUrlLoading(view, url);
if(url.contains("cpanel")) {
createMenu();
}
return true;
}