Android网页填表简单例子

Android网页填表简单例子

用Android写个简单的网页填表操作的时候,发现webview出现了奇怪的白屏现象

用Android对百度首页进行网页填表的主要操作步骤为:

  1. 先设置好webview的一些配置
  2. 将editText的内容填写到百度首页的输入框
  3. 点击“百度一下”按钮

代码如下:

public class WebActivity extends AppCompatActivity {
    private WebView wv_main = null;
    private EditText edit = null;
    private Button btn = null;
    private Button btn2= null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
        // 初始化组件
        initViews();
        // 获取webSettings
        WebSettings settings = wv_main.getSettings();
        //设置true,才能让Webivew支持<meta>标签的viewport属性
        settings.setUseWideViewPort(true);
        //加载https的URL时在5.0以上加载需要此设置:
        wv_main.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
        // 设置支持JavaScript
        wv_main.getSettings().setJavaScriptEnabled(true);
        //设置开启本地DOM存储
        wv_main.getSettings().setDomStorageEnabled(true);
        // 加载默认url
        wv_main.loadUrl("https://www.baidu.com");
        // 点击链接的加载为在当前WebView中加载
        wv_main.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
    }
    // 初始化组件的方法
    public void initViews() {
        wv_main = (WebView) findViewById(R.id.WV_main);
        edit = (EditText) findViewById(R.id.et_input);
        btn = (Button) findViewById(R.id.btn);
        btn2= (Button) findViewById(R.id.btn);
    }
    public void click1(View v){
        String a=edit.getText().toString();
        wv_main.loadUrl("javascript:document.getElementById('index-kw').value='" + a + "';");
    }
    public void click2(View v){
        wv_main.loadUrl("javascript:document.getElementById('index-bn').click();");
    }
}

这样点击填入内容按钮的时候,即在对百度首页的输入框填写内容,会出现白屏,只出现了要填写的内容,其它变为白屏,如下图:

但解决办法很简单,只需更改一下填写内容click1里的JavaScript即可。

public void click1(View v){
        String a=edit.getText().toString();
        String js="javascript:(function(){document.getElementById('index-kw').value='" + a + "'})();";
        wv_main.loadUrl(js);
    }

可能是loadUrl()会使页面刷新的原因吧,这样更改一下就不会出现白屏了:

所以关键应该是要把js代码包装在一个匿名函数里。

javascript: (function() {
    //js代码
})();

再用loadUrl执行。

posted @ 2021-04-10 15:48  harglo  阅读(335)  评论(0)    收藏  举报