【问题标题】:Android: enter keyword in Google search boxAndroid:在谷歌搜索框中输入关键字
【发布时间】:2014-12-27 10:42:08
【问题描述】:

我正在构建一个 Android 应用,用户可以在其中插入某个问题的答案;根据这些答案,该应用选择一个要在 Google 上搜索的词,然后在搜索结果上打开一个随机链接(类似的功能广告旧版 Google“我感到幸运”。

我知道在 Google 中搜索内容的最佳方式是使用 URL www.google.com/search?=myKeyword 进行查询。

但在这种情况下,我希望用户自动看到应用程序:

  • 打开 google.com 网页(在 web 视图中);
  • 在google搜索框中输入关键字;
  • 点击搜索按钮;
  • 显示首页结果;
  • 打开一个随机结果。

我描述了上下文。 现在的问题是:在搜索框中输入关键字并点击网页视图中的搜索按钮的更好方法是什么?我知道使用 Javascript 可以实现某些功能,但是由于我对 JS 的了解并不深入,因此我想探索一些替代方案(如果有的话)。 如果 JS 是唯一的解决方案,你能告诉我从哪里开始吗?

另一种方法是使用 HTMLUnit,但我不想使用它。

【问题讨论】:

  • 我能知道没有任何考虑的反对票是什么意思吗?

标签: java javascript android search


【解决方案1】:

我找到了解决办法。

这里是代码,如果有人需要的话:

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

      myBrowser = (WebView)findViewById(R.id.webView1);

      //Browser settings
      WebSettings myBrowserSettings = myBrowser.getSettings();

      //Delete previously stored cookies and disable cookies
      CookieSyncManager.createInstance(this);
      CookieManager cookieManager = CookieManager.getInstance();
      cookieManager.removeAllCookie();
      cookieManager.setAcceptCookie(false);

      //Prevent cache to be used
      myBrowserSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
      myBrowserSettings.setAppCacheEnabled(false);

      //General settings
      myBrowserSettings.setSaveFormData(false);
      myBrowserSettings.setLoadsImagesAutomatically(true);
      myBrowserSettings.setJavaScriptEnabled(true);

      //FIREFOX 
      myBrowserSettings.setUserAgentString("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");

      myBrowserSettings.setUseWideViewPort(true);
      myBrowserSettings.setLoadWithOverviewMode(true);
      myBrowserSettings.setBuiltInZoomControls(true); 
      myBrowserSettings.setLightTouchEnabled(false);
      myBrowserSettings.setPluginState(PluginState.ON);

      //Open the browser
      myBrowser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);     
      myBrowser.loadUrl(urlToBrowse);
      myBrowser.setWebViewClient(new WebViewClient() {
          public void onPageFinished(WebView view, String url) 
          {
              String word = "My Keyword";

              view.loadUrl("javascript:document.getElementById('gbqfq').value = '"+word+"';");  
              view.loadUrl("javascript:document.getElementById('gbqfba').click();");  
          }
      });

此解决方案完全适用于 Android 4.0.4 和 Firefox 用户代理。

Antway,如果使用另一个 UserAgent(如 Chrome、IE 或 Opera),则此解决方案在搜索框中粘贴关键字后停止(我不知道为什么); .click() JS 不起作用。

更新: 我发现我丢失了“搜索”按钮的引用,因为我启用了 Javascript;所以,我尝试在没有 Javascript 的情况下加载页面,仅在加载页面时启用 JS;这样,任何桌面用户代理都可以完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多