最初にa.htmlをロードし、a.html内のボタンをクリックするとb.htmlがロードされ、b.html内のボタンをクリックするとアクティビティが開始されます。つまり、順番はa.html->b.html->starts an activityです。私の 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)
a.htmlではなくb.htmlのボタンをクリックしたときにのみ呼び出されます。
これらの 3 つのメソッドをいつ呼び出す必要があるか、非常に混乱しています。