【问题标题】:Android - Pass value from app to webview page not workingAndroid - 将值从应用程序传递到 webview 页面不起作用
【发布时间】:2014-04-29 19:23:31
【问题描述】:

我只是想通过 javascript 使用 android 开发者页面中的示例将值从我的应用程序传递到 webview。

我的 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 日志中,我可以看到函数 getLogin、getId 和 getNome 在 webview 上按下按钮时被调用,具有正确的值,但我的 div“teste”仅保留“Aguarde ...”和按钮本身仍处于“按下状态”。

任何想法请回复。我真的不知道该去哪里找了。

【问题讨论】:

    标签: java javascript android webview


    【解决方案1】:

    尝试使用 public int getId() 而不是 Integer。尝试仅调用 getLogin 和 getNome。看看 getId 是否是问题制造者。如果你注释掉最后一个innerHtml,那么按钮会出现吗?

    【讨论】:

    • 你明白了......只是将“public Integer getId()”更改为“public int getId()”并工作!谢谢,我已经花了很多时间了。
    猜你喜欢
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2016-11-22
    • 1970-01-01
    相关资源
    最近更新 更多