Dan*_*iel 19 url android webview
我的Android应用程序中有一个webview,想要检测网址何时发生变化.
当用户在info.php页面上时,我想使用它来隐藏顶部栏中的信息按钮,当他不在info.php页面上时再次显示它.
我用Google搜索但找不到任何正常工作的代码,有人可以帮助我吗?
Rin*_*eri 12
您可以使用WebViewClient.shouldOverrideUrlLoading来检测WebViewClient上的每个URL更改
Shu*_*ang 12
对于那些通过javascript加载网址.有一种方法可以通过JavascriptInterface检测网址更改.这里我以youtube为例.使用JavaScriptInteface有异步问题,幸运的是它只是一个回调在这里,所以这将是更少的问题.请注意,必须存在@javascriptinterface注释.
{
youtubeView.getSettings().setJavaScriptEnabled(true);
youtubeView.setWebViewClient(mWebViewClient);
youtubeView.addJavascriptInterface(new MyJavaScriptInterface(),
"android");
youtubeView.loadUrl("http://www.youtube.com");
}
WebViewClient mWebViewClient = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.android.onUrlChange(window.location.href);");
};
};
class MyJavaScriptInterface {
@JavascriptInterface
public void onUrlChange(String url) {
Log.d("hydrated", "onUrlChange" + url);
}
}
Run Code Online (Sandbox Code Playgroud)
grA*_*uit 12
我知道我迟到了比赛,但是我一遍又一遍地遇到了这个问题……我终于找到了一种直截了当的选择。只需重写WebViewClient.doUpdateVisitedHistory
override fun doUpdateVisitedHistory(view: WebView?, url: String?, isReload: Boolean) {
// your code here
super.doUpdateVisitedHistory(view, url, isReload)
}
Run Code Online (Sandbox Code Playgroud)
它适用于所有url更改,即使是JavaScript更改!
如果这不能使您开心,那么我不知道会怎样:)
我用了这个方法:
webView.setWebChromeClient(new WebChromeClient()
{
@Override public void onProgressChanged(WebView view, int newProgress) {
if (view.getUrl().equals(mUrl))
{
}
else
{
mUrl = view.getUrl();
// onUrlChanged(mUrl) // url changed
}
super.onProgressChanged(view, newProgress);
}
};
);
Run Code Online (Sandbox Code Playgroud)
mUrl是一个字段String...
如果您重写WebViewClient的此方法,则可以处理url更改和javascript url更改:
public class YXWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.i("Listener", "Start");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.i("Listener", "Finish");
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的WebView中设置WebViewClient
yxWebViewClient = new YXWebViewClient();
webview.setWebViewClient(yxWebViewClient);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37588 次 |
| 最近记录: |