機能リンクには、myurl:// functionのようなカスタムURLスキームを使用できます。 URLを処理する方法を決定するWebViewのshouldOverrideUrlLoadingイベントのイベントハンドラを記述します.WebViewにロードするよう指示するか、カスタムアクションを実行します。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.startsWith("myurl://"))
{
// Parse further to extract function and do custom action
}
else
{
// Load the page via the webview
view.loadUrl(url);
}
return true;
}
私はこの迅速かつ汚い例えばURLをチェックするためのstartsWithを使用していますが、URLを解析するためandroid.net.Uri.parseを使用することを検討すべきです。
これにより、最初のWebViewを経由することなく、Java関数foo()を呼び出すことができます。
あなたが最初のWebViewを通過する場合は、あなたがこのようなJSInterface上の関数を呼び出すことができます(webView1が最初のWebViewでfindViewByIdによって取得):
webView1.loadUrl("javascript:myjsinterface.myjsfunc();")
私は私が間違って理解していない願っていますあなたの質問。これはあなたを助けるはずですhttp://stackoverflow.com/questions/3765860/adding-javascript-interface-to-a-browser –
2番目のwebviewが最初のwebviewへのオーバーレイであることを意図しているなら、それはアーキテクチャからもっと簡単かもしれませんHTMLでオーバーレイを実行して1つのWebビューのみを使用するというリソース利用の観点から見て、より優れています。 – Theo