You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android通过@JavascriptInterface向WebView JS传字符串返回undefined问题

问题成因

该问题和WebView JS交互机制本身没有关联,Android侧接口逻辑完全正常,问题完全由JS代码的语法作用域问题导致:

  • StringFromAndroid作为构造函数使用时,内部通过var string声明的是函数局部变量,仅在函数内部作用域生效,不会挂载到new关键字生成的实例对象上,因此外部访问currentString.string时属性不存在,取值为undefined。Android侧的provideAString返回值已经正确返回到JS侧,只是没有被正确存储到实例属性中。

修复方案

有两种常用修复方式,可根据业务场景选择:

方案1:保留构造函数用法,将返回值挂载到实例属性

修改StringFromAndroid的内部实现,把取值结果绑定到实例的this对象:

function StringFromAndroid(){
    this.string = Android.provideAString();
}

原有调用逻辑无需修改,currentString.string即可正常获取到返回的字符串。

方案2:改为普通函数直接返回值,无需实例化

如果没有生成实例做后续扩展的需求,直接改写为普通函数返回值更简洁,无多余开销:

// 定义普通函数直接返回Android侧返回的字符串
function getStringFromAndroid(){
    return Android.provideAString();
}

// 调用逻辑对应修改
var currentString = getStringFromAndroid();
Android.printTheString(currentString);

补充注意:使用addJavascriptInterface时若加载的是不可信外部网页,建议添加域名白名单限制接口调用权限,避免出现安全漏洞。

内容的提问来源于stack exchange,提问作者D. Kupra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:39:03