将数据从java类传递到Web View html

我正在我的网页视图中加载此HTML

https://mail-attachment.googleusercontent.com/attachment/?ui=2&ik=25c0c425c6&view=att&th=138db54ff27ad34b&attid=0.1&disp=inline&realattid=f_h5ahtmbe0&safe=1&zw&saduie=AG9B_P9YNooGjsk_jLefLptQ9q15&sadet=1343790299575&sads=-yBVsLKP_2mh7zMfYLCF7sL1u-w

现在我想做的是填充来自我的java类variables的html中的文本框,然后自动点击提交。

但我不知道该怎么做。

任何人都会受到赞赏。

首先,您的url似乎不可用。

如果你想在Android应用程序和你的网络应用程序/网页之间进行数据交换,你可以通过javascript实现这一点。

以下是Android官方网站的示例:

创建一个这样的类:

 public class JavaScriptInterface { Context mContext; /** Instantiate the interface and set the context */ JavaScriptInterface(Context c) { mContext = c; } /** Show a toast from the web page */ @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } } 

在您的WebView

 WebView webView = (WebView) findViewById(R.id.webview); webView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 

在您的网页中:

   

如果你想传递一些东西到你的网页,只需调用相应的javascript函数:

 String str = "xxx"; myWebView.loadUrl("javascript:xxx('"+str+"')"); 

以下是参考: http : //developer.android.com/guide/webapps/webview.html

我想补充说,加载html时应该完成javascript函数的加载。 要控制它,您可以使用以下内容:

 webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl("file:///android_asset/test.html"); webview.setWebViewClient(new WebViewClient(){ public void onPageFinished(WebView view, String url){ webview.loadUrl("javascript:init('" + theArgumentYouWantToPass + "')"); } }); 

的test.html

    Test   hola adios    

取自Uncaught ReferenceError:myFunction未定义为null:1 webview中的Androidexception

只需启用DomStorage并将“var x =”写入字符串:

 webview.getSettings().setJavaScriptEnabled(true); web.getSettings().setDomStorageEnabled(true); webview.loadUrl(urlString); webview.setWebViewClient(new WebViewClient(){ public void onPageFinished(WebView view, String url){ super.onPageFinished(view, url); String js = "javascript:var x =document.getElementById('username').value = '"+user+"';var y=document.getElementById('password').value='"+pass+"';"; if (Build.VERSION.SDK_INT >= 19) { view.evaluateJavascript(js, new ValueCallback() { @Override public void onReceiveValue(String s) { } }); } else { view.loadUrl(js); } view.loadUrl(js); } }); 

小心调用这样的javascript函数, str可能包含单引号或其他特殊字符。

 String str = "xxx"; myWebView.loadUrl("javascript:xxx('"+str+"')"); 

我建议在base64中编码str ,并在javascript端对其进行解码。

  • Android的

     String str = "xxx"; //encode in base64 String base64Str = Base64.encodeToString(str.getBytes(), Base64.NO_WRAP); myWebView.loadUrl("javascript:xxx('"+ base64Str +"')"); 
  • 使用Javascript

     function xxx(val) { //decode from base64 var str = atob(data) }