在WebView中通过@JavascriptInterface从Android传递一个字符串给JS



这是我的Javascript界面:

class WebAppInterface(val context: Context){
@JavascriptInterface
fun provideAString():String{
println("executed from js")
println("this is text")
return "this is text"
}
@JavascriptInterface
fun printTheString(s:String){
println(s)
}
}

我是这样把它添加到WebView的:

webView.addJavascriptInterface(WebAppInterface(this), "Android")
下面是我如何从JS中调用这两个函数:
function StringFromAndroid(){
var string=Android.provideAString();
}
...
...
var currentString=new StringFromAndroid();
Android.printTheString(currentString.string);

打印行如下:

I/System.out: executed from js  
I/System.out: this is text
I/System.out: undefined

预期行为:

打印第1行和第2行演示了从JS正确调用provideAString()。打印行3显示,printTheString(s)被正确地从JS中调用,但currentString.string在WebView中的值是"未定义"。预期的行为是,当var currentString=new StringFromAndroid();通过var string=Android.provideAString();行强制调用Android.provideAString();时,该调用将返回字符串"这是文本"。并将var string设置为该值,因此,currentString.string将为&;this is text&;而不是"undefined"

Android.provideAString();赋值给this:

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

最新更新