より堅牢なアプローチは、独自の JavaScript コードを WebView に直接挿入することです。このインジェクションは、どの URL が内部にロードされているかを気にしないため、任意のサイトに対して行うことができます。
大きなセキュリティ ホールのように聞こえますが、実際にはそうではありません。ブラウザはアプリの中にあります。つまり、あなたがブラウザであるため、表示している Web サイトの HTML コードを解析しながら、やりたいことが何でもできます。
これは、いくつかの JS を Google がホストするページにロードするコード例です。
final WebView webview = (WebView)findViewById(R.id.browser);
/* JavaScript must be enabled if you want it to work, obviously */
webview.getSettings().setJavaScriptEnabled(true);
/* WebViewClient must be set BEFORE calling loadUrl! */
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
webview.loadUrl("javascript:(function() { " +
"document.getElementsByTagName('body')[0].style.color = 'red'; " +
"})()");
}
});
webview.loadUrl("http://code.google.com/android");
独自の JS を実行できる場合は、DOM を直接トラバースしたり、検索ボックス自体にアクセスしたり、フォーカスがあることを確認したりするなど、ほとんど何でもできます。
挿入する JS コードを特定するには、PC で Google Chrome を使用し、Chrome デベロッパー ツール内で google.com を開きます。次に、必要な結果が得られるまで、コンソールに JS コマンドを入力してみてください。コンソールに JS 行を入力する = JS コードをページに挿入します。