2017-06-06 436 views
0

我正在使用WebView尝试使用我发送的数据填充表单。从Android使用WebView自动填充表格

WebView webView; 
String url = "http://139.59.34.30/quotation/"; 
String btn_ci, btn_co, n, a, k, r, m; 
Intent in; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web); 
    webView = (WebView) findViewById(R.id.webview); 
    in = getIntent(); 
    btn_ci = in.getStringExtra("checkin"); 
    btn_co = in.getStringExtra("checkout"); 
    n = in.getStringExtra("name"); 
    a = in.getStringExtra("adults"); 
    k = in.getStringExtra("kids"); 
    r = in.getStringExtra("rooms"); 
    m = in.getStringExtra("mail"); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      view.loadUrl("javascript:document.getElementsByName('name').value = '"+n+ 
        "';document.getElementsByName('checkin').value='"+ btn_ci + 
        "';document.getElementsByName('checkout').value='"+ btn_co + 
        "';document.getElementsByName('no_of_pax').value='"+ a + 
        "';document.getElementsByName('no_of_kid').value='"+ k + 
        "';document.getElementsByName('no_of_rooms').value='"+ r +"';"); 
     } 
    }); 
    webView.loadUrl(url); 

可是每次活动执行的页面加载不填充值一段时间,然后它只是显示最后一个字符串我已经过去了。

回答

1

,而不是你的代码中onPageFinished,你可以使用如下代码,它完全可以在所有的Android API版本,

 final String js = "javascript: " + 
       "var nameDoc = document.getElementsByName('name');" + 
       "nameDoc[0].value = '"+n+ "';" + 
       "var checkOutDoc = document.getElementsByName('checkout');" + 
       "checkOutDoc[0].value = '"+btn_co+ "';" + 
       "var noOFPaxDoc = document.getElementsByName('no_of_pax');" + 
       "noOFPaxDoc[0].value = '"+a+ "';" + // a should be int based on ur HTML 
       "var noOFKidDoc = document.getElementsByName('no_of_kid');" + 
       "noOFKidDoc[0].value = '"+k+ "';" + // a should be int based on ur HTML 
       "var noOFRoomsDoc = document.getElementsByName('no_of_rooms');" + 
       "noOFRoomsDoc[0].value = '"+r+ "';" + // a should be int based on ur HTML 
       "var checkInDoc = document.getElementsByName('checkin');" + 
       "checkInDoc[0].value = '"+btn_ci+ "';"; 

     if (Build.VERSION.SDK_INT >= 19) { 
      view.evaluateJavascript(js, new ValueCallback<String>() { 
       @Override 
       public void onReceiveValue(String s) { 

       } 
      }); 
     } else { 
      view.loadUrl(js); 
     } 
+0

太谢谢你了!这工作得很好! –