我试图将一个字符串参数传递给web应用程序javascript代码。它在传递具有字符串值的变量时失败。但当我们对数据进行硬编码时,它是有效的。请告诉我这是怎么回事。
工作硬编码代码:
mWebview.evaluateJavascript("cm.setData('N051783')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value3) {
Log.d(" setData Return Value"," setData Return... "+value3);
}
});
无法使用字符串变量的代码
mWebview.evaluateJavascript("cm.setData("+sub_data+")", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value3) {
Log.d(" sub_data Return Value"," sub_data Return... "+value3);
}
});
您可能缺少"quot
我在com.UserProfile 上的JavaScript函数
function setUserName(name){
alert('username is ' + name)
}
如何从Java调用它
mWebview.evaluateJavascript("com.UserProfile.setUserName("Rohit")",null);
如何传递参数
您需要将";带有参数"是一个特殊的角色。这就是如何连接";在字符串中。
这里有一个例子:
String username = "Rohit";
String func = com.UserProfile.setUserName(""+ username + "")";
mWebview.evaluateJavascript(func, null);
您可以使用StringBuilder来连接以及">
让我们一行一行地把它分解;
StringBuilder sb = new StringBuilder();
sb.append("com.UserProfile.setUserName") //com.UserProfile.setUserName
.append("(") //com.UserProfile.setUserName(
.append(""") //com.UserProfile.setUserName("
.append(username) //com.UserProfile.setUserName("Rohit
.append(""") //com.UserProfile.setUserName("Rohit"
.append(")") //com.UserProfile.setUserName("Rohit")
String func = sb.toString();
mWebview.evaluateJavascript(func, null);