我有一个WebView从Internet上加载页面.我想显示一个ProgressBar直到加载完成.
我如何监听完成页面加载WebView?
问题很简单.在应用程序中,我们希望跟踪显示的当前URL.为此,我们使用shouldOverrideUrlLoading回调来WebViewClient保存url到每个更新的类字段.这是相关代码:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mCurrentUrl = url;
// If we don't return false then any redirect (like redirecting to the mobile
// version of the page) or any link click will open the web browser (like an
// implicit intent).
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
...
}
});
mWebView.loadUrl(mInitialUrl);
Run Code Online (Sandbox Code Playgroud)
但是,至少有一种情况,即回调永远不会被触发,并且mCurrentUrl字段不会更新.
网址:https://m.pandora.net/es-es/products/bracelets/556000
上次更新的URL(在单击产品时永远不会调用shouldOverrideUrlLoading):https://m.pandora.net/es-es/products/bracelets
我尝试过像onPageStarted()这样的回调,但是url也被过滤了,因为它的受保护代码似乎没有可访问的上游. …
谢谢你试图解决我的问题!
目前我的应用程序基本上使用Android Web视图加载网页.缺点是有时(连接不良)网页需要10秒以上才能加载.有没有办法在网页加载时创建某种启动XML"加载"屏幕?
看看我的代码......
package com.ect;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class SomeActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//THIS IS WHAT I WANT: setContentView(R.layout.main);
CookieSyncManager.createInstance(getBaseContext());
// Let's display the progress in the activity title bar, like the
// browser app does.
getWindow().requestFeature(Window.FEATURE_PROGRESS);
WebView webview = new WebView(this);
setContentView(webview);
webview.getSettings().setJavaScriptEnabled(true);
final Activity activity = this; …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码在android webview中加载url
webviewShowPost.loadUrl(URL);
Run Code Online (Sandbox Code Playgroud)
我想检查是否没有可用的数据连接,然后webview而不是显示空白视图,我可以显示没有连接的Toast.
谢谢
我有一个应用程序,它显示启动页面并在 WebView 中加载 URL 时删除该启动页面。以下是我们用来移除启动页面的相关代码:
browser.setWebViewClient(new BrowserClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Work around for WebView onPageFinished called twice
if (flag == true) {
browser.setVisibility(View.VISIBLE);
splashImage.setVisibility(View.INVISIBLE);
pageLoader.setVisibility(View.INVISIBLE);
} else {
flag = true;
}
}
});
Run Code Online (Sandbox Code Playgroud)
这段代码有效......除了它很慢。在网页加载很久之后,启动页面需要很长时间才能删除。
是否有任何关于如何可靠地检测 WebView 何时加载页面的提示?过去几天我一直在研究这个,我似乎无法想出任何可靠的东西。
我看到的最有希望的是以下内容,但将此代码放在 Android 控制台中会引发错误:
@Override
public void invalidate() {
super.invalidate();
if (getContentHeight() > 0) {
// WebView has displayed some content and is scrollable.
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:有很多答案提出 onPageFinished,甚至有人将其标记为重复,并带有指向使用 onPageFinished 的解决方案的链接。伙计们,我们已经在使用 onPageFinished …