2012-08-01 8 views
15

estoy cargando este código HTML en mi vista webdatos que pasan de la clase Java para 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

ahora lo que quiero hacer es llenar el cuadro de texto en el código HTML que vino de mi java variable de clase y luego presionar enviar automáticamente.

Pero no tengo ni idea de cómo hacerlo.

Se agradecerá cualquier pensamiento.

Respuesta

37

En primer lugar, su URL parece no estar disponible.

Si desea hacer un intercambio de datos entre la aplicación de Android y su aplicación web/página web, puede hacerlo a través de javascript.

Aquí se muestra un ejemplo de Android sitio oficial:

Crear una clase como esta:

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(); 
    } 
} 

En su WebView:

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

En su página web:

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

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

Si quieres pasar algo a su página web, simplemente llamando correspondiente función javascript:

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

su referencia es: http://developer.android.com/guide/webapps/webview.html

+1

¿Qué quiere decir con esto myWebView.loadUrl ("javascript: xxx ('xxx')"); También estoy usando load url para cargar mi html, así que está bien usar load url para varias veces. – User

+1

sí, siempre y cuando la función javascript exista en su página web – hungr

+1

Veo que es por eso que voy a cargar el javascript porque tiene el código para pasar algunos datos. – User

14

Añado que la carga de la función JavaScript debe hacerse cuando el html está cargado. Para controlar esto, puede utilizar lo siguiente:

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

<!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> 

Tomado de Uncaught ReferenceError: myFunction is not defined at null:1 Android exception in webview

+0

muy, muy bonito .... en PAGEFinished es un punto importante que olvidé de usar ... –

+0

¿Dónde puedo agregar la carpeta android_asset –

0

Solamente es necesario activar DomStorage y escribir "var x =" a cadena:

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); 
} 


}); 
Cuestiones relacionadas