Así que sé que hay otras publicaciones que abordan el mismo problema, y creo que las he seguido al pie de la letra pero sin éxito. Estoy intentando aprender cómo hacer que mi aplicación interactúe con JavaScript. Solo quiero poder devolver un valor de mi javascript a mi actividad.
aquí es mi actividad:Android-using addJavaScriptInterface para devolver un valor de Javascript
public class JSExample extends Activity {
WebView mWebView;
String mString;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.mWebView);
mWebView.addJavascriptInterface(new ClsAccessor(), "accessor");
String html = getAssetsContent("jsinterface.html");
mWebView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
// Log.d("YO!", mString);
}
private String getAssetsContent(String filename){
.....
}
private void closeStream(BufferedReader stream) {
.....
}
class ClsAccessor{
public void setValue(String value){
JSExample.this.mString = value;
}
}
Aquí está el archivo HTML cargada por mi vista Web que contiene el Javascript Quiero correr:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">
accessor.setValue('Hello!');
</script>
</head>
<body>
<h1>Testing</h1>
</body>
</html>
Esto no funciona. Cuando ejecuto el código con "Log.d (" YO! ", MString);" Sin comentarios Obtengo una excepción de puntero nulo, lo que significa que el javascript nunca asignó un valor a mString. ¿Qué estoy haciendo mal?
¿Está ejecutando en un problema? –
oh tonto yo. sí, me encuentro con un problema. cuando la línea "Log.d (" YO! ", mString)" está descomentada, obtengo una NullPointerException, lo que significa que a mString nunca se le asignó un valor, lo que significa que no se pudo vincular javascript a java. Entonces, ¿qué estoy haciendo mal? – aamiri