android - 如何在android中传递一个字符串参数来评估Javascript
问题描述
我试图将字符串参数传递给 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);
}
});
解决方案
您可能缺少“”
我在 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);
推荐阅读
- jquery - Ajax.click 网站上的功能按钮没有做任何事情
- mysql - 使用 SQL 查询从表中选择数据
- javascript - 如何将 jquery 代码更改为 javascript 或 typescript
- c++ - 如何将边界框与 groupRectangle 合并?
- python - DjangoProject 没有出现在我的 Docker-Image 中(适用于 Windows 主页的 Docker 工具箱)
- java - JavaFX 媒体播放器只播放一秒钟的 MP3
- c++ - 如何获得插值极坐标?
- django-rest-framework - Django REST外键问题
- excel - 根据姓名和姓氏自动生成 ID
- typescript - "!" 是什么意思 (爆炸符号)在属性声明中是什么意思?