我只是尝试使用Android开发者页面中的示例,通过javascript将值从我的应用传递到webview。
我的网页视图设置为:
WebView navegador;
final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this);
navegador.getSettings().setJavaScriptEnabled(true);
navegador.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
navegador.addJavascriptInterface(myJavaScriptInterface, "navegador");
navegador.loadUrl(url);
在它下面我创建了JavaScriptInterface类:
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
System.out.println("FaceWeb -> Navegador.java -> JavascriptInterface");
mContext = c;
}
public String getLogin(){
System.out.println("FaceWeb -> Navegador.java -> getLogin: "+b.getString("login"));
return b.getString("login");
}
public String getNome(){
System.out.println("FaceWeb -> Navegador.java -> getNome: "+ b.getString("nome"));
return b.getString("nome");
}
public Integer getId(){
System.out.println("FaceWeb -> Navegador.java -> getId: "+ b.getInt("id"));
return b.getInt("id");
}
}
这是我的HTML:
<body>
<div id="teste">
Parado.
</div>
<input type="button" onclick="leitura()" value="Buscar Valores" />
<script type="text/javascript">
function leitura()
{
document.getElementById("teste").innerHTML = "Aguarde...";
var fonte = navegador.getLogin();
var id = navegador.getId();
var nome = navegador.getNome();
document.getElementById("teste").innerHTML = "Login: "+fonte + "<br>Nome: "+nome+"<br>ID: "+id;
}
</script>
</body>
在Eclipse日志中,我可以看到在webview上按下按钮时调用函数getLogin,getId和getNome,具有正确的值,但我的div“teste”仅保留“Aguarde ...”和按钮本身仍然“紧迫”。
任何想法,请回复。我真的不知道在哪里看了。
答案 0 :(得分:0)
尝试使用public int getId()而不是Integer。尝试仅调用getLogin和getNome。看看getId是否是问题制定者。如果您将最后一个innerHtml注释掉,那么按钮会出现吗?