首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >google网站上的android webview自动发送enter键

google网站上的android webview自动发送enter键
EN

Stack Overflow用户
提问于 2013-07-21 16:06:47
回答 1查看 2.5K关注 0票数 1

我有一个加载WebView的小程序,比如"www.google.com“。在扫描条形码后,我尝试在没有用户输入的情况下开始自动搜索,如下所示:

代码语言:javascript
复制
final String scanedCode = "123456";
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        dispatchKeyEvent(new KeyEvent(100, scanedCode, 1, 0));
        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
    }
);

数字"123456“将显示在谷歌搜索字段,但回车,或更确切地说,自动搜索不会开始。

有人能给我一些建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-21 21:54:56

一种更健壮的方法是将您自己的javascript代码直接注入WebView中。这种注入并不关心加载的是哪个URL,所以您可以对任何站点执行此操作。

这听起来像是一个很大的安全漏洞,但事实并非如此,浏览器在你的应用程序内部,这意味着你的是浏览器,所以你可以在解析你正在显示的网站的HTML代码时做任何你想做的事情。

以下是将一些JS加载到google托管页面的代码示例:

代码语言:javascript
复制
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代码注入页面。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17770315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档