[英]How can I return a value of a JavaScript function, which is called by a HTML button click?
[英]How can I get the return value of a JavaScript function called by Android?
Android是否可以调用JavaScript函数(位于WebView中)并在Java中获取其返回值?
我知道我可以使用JavascriptInterface(在Android中),为此,我需要从js函数调用该接口,但是我无法修改JavaScript函数...
所以我想要下面这样的东西,有可能吗?
JavaScript:
function hello(){
return "world";
}
Android:
String res = myWebView.loadUrl("javascript:hello()");
// res = "world"
谢谢
对的,这是可能的。 我之前已经在人们网站上做了很多JavaScript注入。 您只需要在任何网站中注入自己的JavaScript。
例如
//simple javascript to pass value from javascript to native app
String javascript = "javascript:function testHello(){return Android.hello('HAI'); testHello();}"
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//put your function in string and load the javascript when the page is finished load
view.loadUrl(javascript);
}
});
// 'Android' is your variable key for triggering the function ex: Android.hello(), Android.calculate()
// you can change to other name like 'APP', so in javascript be like this ex: APP.hello(), APP.calculate()
webview.addJavascriptInterface(new WebAppInterface(this), "Android");
//load website
webview.loadUrl(PageUrl);
在WebAppInterface中,您可以在其中创建函数来检测之前注入的javascript
public class WebAppInterface {
Activity mContext;
public WebAppInterface(Activity c) {
mContext = c;
}
//this function will get your value from the javascript earlier.
//Android.hello('value')
@JavascriptInterface
public void hello(String value){
//you will get HAI message in here
Log.i("TAG",value);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.