我的应用程序中有一个 webview,首先它加载 a.html,单击 a.html 内的按钮,然后加载 b.html,单击 b.html 内的按钮,然后将启动一个活动。简而言之,顺序是a.html->b.html->启动一个活动。我的 webView 扩展了 WebViewClient,并覆盖了它的方法如下。
private class WebViewHandler extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
Log.d("onPageStarted", "onPageStarted:" + url );
mProgress.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url)
{
Log.d("onPageFinished", "onPageFinished:" + url );
mProgress.setVisibility(View.GONE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
Log.d("url", "onPageoverloaded the url: "+url);
String tutorialId = url.substring(url.lastIndexOf("=") + 1);
MetaioDebug.log("Tutorial Id detected: "+tutorialId);
if (url.startsWith("metaio://"))
{
if (tutorialId != null)
{
MetaioDebug.log("Native code tutorial to be loaded #"+tutorialId);
if (tutorialId.equals("1"))
{
Intent intent = new Intent(getApplicationContext(), Tutorial1.class);
startActivity(intent);
}
return true;
}
}
问题是onPageStarted()
它只在 a.html 开始加载时被调用,但在 b.html 开始加载时不会被调用。 shouldOverrideUrlLoading(WebView view, String url)
仅当我单击 b.html 中的按钮而不是 a.html 中的按钮时才调用。
我很困惑什么时候应该调用这三种方法?