2014-12-27 4 views
-1

사용자가 몇 가지 질문에 대한 대답을 입력하는 Android 앱을 만들고 있습니다. 이 답변을 기반으로 앱은 Google에서 검색 할 단어를 선택한 다음 검색 결과에서 임의의 링크를 엽니 다 (이전 Google과 비슷한 기능 광고 "나는 운이 좋았다").Android : Google 검색 창에 키워드를 입력하십시오.

검색하는 가장 좋은 방법은 알고 있습니다. . 구글에 뭔가가 URL www.google.com/search?=myKeyword를 사용하여 쿼리

이다 그러나이 경우, 나는 사용자가 자동으로 응용 프로그램을 참조합니다 :

  • 열기 google.com으로 웹 페이지 (웹 뷰 내부)
  • 키워드를 Google 검색 창에 입력하십시오 :
  • 검색 버튼을 누릅니다.
  • 첫 페이지 출력 결과;
  • 임의의 결과를 엽니 다.

이 문맥을 설명했다. 이제 질문 : 검색 상자에 키워드를 입력하고 웹보기에서 검색 버튼을 누르는 더 좋은 방법은 무엇입니까? Javascript로 뭔가를 할 수 있다는 것을 알고 있지만 JS를 깊이 알지 못하기 때문에 몇 가지 대안을 찾아보고 싶습니다. JS가 유일한 해결책 인 경우 어디에서 시작할 지 알려주실 수 있습니까?

또 다른 방법은 HTMLUnit을 사용하는 것입니다.하지만 HTMLUnit을 사용하지 않는 것이 좋습니다.

+0

아무런 의미가없는 투표가 어떤 의미인지 알 수 있습니까? –

답변

0

해결책을 찾을 수있었습니다. 여기

코드

, 사람이 그것을 필요로하는 경우 :

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();"); 
      } 
     }); 

이 솔루션은 완전히 안드로이드 4.0.4와 파이어 폭스 사용자 에이전트에서 작동합니다.

Antway, 다른 UserAgent (예 : Chrome, IE 또는 Opera)를 사용하는 경우이 솔루션은 검색 창에 키워드를 추가 한 후에 중지됩니다 (이유를 모르겠습니다). .click() JS가 작동하지 않습니다.

업데이트 : Javascript를 활성화했기 때문에 "검색"버튼의 참조를 잃어 버리고있는 것으로 나타났습니다. 그래서, 페이지가로드 될 때만 JS를 사용하도록 Javascript없이 페이지를로드하려고했습니다. 이런 식으로 모든 데스크탑 사용자 에이전트를 사용하면 모든 것이 완벽하게 작동합니다.

관련 문제