如何在android中将字符串参数传递给evaluatteJavascript



我试图将一个字符串参数传递给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);


最新更新