【问题标题】:Android webview auto searchAndroid webview 自动搜索
【发布时间】:2021-03-04 13:07:29
【问题描述】:

我在 Android 中有一个 Webview,我希望它在 google 中搜索我的关键字,然后单击一个名为 http://digikala.com/ 的网站并对其执行一些任务。
我在 kotlin 中尝试过:

findViewById<WebView>(R.id.web).settings.javaScriptEnabled = true
findViewById<WebView>(R.id.web).settings.loadsImagesAutomatically = true
findViewById<WebView>(R.id.web).settings.pluginState = WebSettings.PluginState.ON
findViewById<WebView>(R.id.web).webViewClient = MyBrowser()
findViewById<WebView>(R.id.web).loadUrl("https://www.google.com/search?q=$mykey")
btn.setOnClickListener{
btnPressed()
}

还有btnPressed()

fun btnPressed() {
    findViewById<WebView>(R.id.web).loadUrl(
        "javascript:(function(){" +
                "l=document.getElementsByClassName('yuRUbf');" +
                "e=document.createEvent('HTMLEvents');" +
                "e.initEvent('click',true,true);" +
                "l.dispatchEvent(e);" +
                "})()"
    );

}

结果是什么都没有发生。没有错误,没有点击!

【问题讨论】:

    标签: javascript android kotlin webview click


    【解决方案1】:

    请试试这个sn-p

    package com.search.demo;  
    
    
     import java.lang.reflect.Method;  
    
     import android.app.Activity;  
     import android.os.Bundle;  
     import android.view.KeyEvent;  
     import android.view.Menu;  
     import android.view.MenuItem;  
     import android.view.View;  
     import android.view.View.OnClickListener;  
     import android.view.View.OnKeyListener;  
     import android.webkit.WebView;  
     import android.widget.Button;  
     import android.widget.EditText;  
     import android.widget.LinearLayout;  
    
     public class SearchActivity extends Activity {  
          WebView mWebView;  
          private LinearLayout container;  
          private Button nextButton, closeButton;  
         private EditText findBox;  
    
        /** Called when the activity is first created. */  
    
       @Override  
       public void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.main);  
           mWebView = (WebView)findViewById(R.id.webview);  
           mWebView.loadUrl("http://devemat-androidprogramming.blogspot.com/");  
       }  
    
       private static final int SEARCH_MENU_ID = Menu.FIRST;  
    
       @Override  
       public boolean onCreateOptionsMenu(Menu menu){  
           super.onCreateOptionsMenu(menu);  
    
           menu.add(0, SEARCH_MENU_ID, 0, "Search");  
           return true;  
       }  
    
       public boolean onPrepareOptionsMenu(Menu menu){  
           super.onPrepareOptionsMenu(menu);  
           return true;  
       }  
    
       public boolean onOptionsItemSelected(MenuItem item){  
           switch(item.getItemId()){  
               case SEARCH_MENU_ID:  
                   search();  
               return true;  
           }  
           return true;  
       }  
    
       public void search() {
        container = (LinearLayout) findViewById(R.id.layoutId);
    
        nextButton = new Button(this);
        nextButton.setText("Next");
        nextButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mWebView.findNext(true);
            }
        });
    
        container.addView(nextButton);
    
        closeButton = new Button(this);
        closeButton.setText("Close");
        closeButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                container.removeAllViews();
    
            }
        });
        container.addView(closeButton);
    
        findBox = new EditText(this);
        findBox.setMinEms(30);
        findBox.setSingleLine(true);
        findBox.setHint("Search");
    
        findBox.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && ((keyCode == KeyEvent.KEYCODE_ENTER))) {
                    mWebView.findAll(findBox.getText().toString());
    
                    try {
                        Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
                        m.invoke(mWebView, true);
                    } catch (Exception ignored) {
                    }
                }
                return false;
            }
        });
    
        container.addView(findBox);
        }
    }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2020-06-08
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      相关资源
      最近更新 更多