2012-08-01 122 views
15

我加載這個網站在我的網絡視圖將數據傳遞到Web查看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

現在我想要做的是填補了HTML,從我的Java出現的文本框中類變量,然後自動命中提交。

但我不知道如何做到這一點。

任何thougths將不勝感激。

回答

37

首先,您的網址似乎不可用。

如果你想在android應用程序和你的web應用程序/網頁之間進行數據交換,你可以通過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"); 

在你的網頁:

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

如果你想傳遞的東西到您的網頁,只調用相應的JavaScript函數:

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

這裏是參考: http://developer.android.com/guide/webapps/webview.html

+1

這是什麼意思,這myWebView.loadUrl(「javascript:xxx('xxx')」);我也使用加載URL來加載我的HTML,所以可以多次使用加載URL? – User 2012-08-01 04:52:12

+1

是的,只要您的網頁中存在javascript功能 – hungr 2012-08-01 05:12:27

+1

我明白這就是爲什麼我會加載JavaScript,因爲它有代碼傳遞一些數據。 – User 2012-08-01 05:20:25

14

我要補充的是JavaScript函數的負荷應在HTML完成被加載。要控制,你可以使用以下命令:

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從Uncaught ReferenceError: myFunction is not defined at null:1 Android exception in webview

+0

非常非常好.... onPageFinished是重要的一點,我忘了使用它... – 2015-10-05 21:40:12

+0

我在哪裏可以添加android_asset文件夾 – 2016-08-18 17:35:03

0

兩者

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
</head> 

<body> 
hola 
adios 
</body> 

<script type="text/javascript"> 

    function init(val){ 
// Do whatever you want with your parameter val 
    } 
</script> 
</html> 

只啓用DomStorage並寫上 「變種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<String>() { 
       @Override 
       public void onReceiveValue(String s) { 

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

    view.loadUrl(js); 
} 


});