一种更强大的方法是将您自己的 JavaScript 代码直接注入 WebView。此注入不关心内部加载了哪个 URL,因此您可以对任何站点执行此操作。
这听起来像是一个很大的安全漏洞,但事实并非如此。浏览器在您的应用程序内部,这意味着您就是浏览器,因此您可以在解析所显示网站的 HTML 代码时做任何您想做的事情。
这是一个将一些 JS 加载到谷歌托管页面中的代码示例:
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 代码注入页面。