我想从我的Java Android上的JS函数中获取值
样品,
function getStringToMyAndroid(stringFromAndroid){
var myJsString = "Hello World" + ;
return myJsString;
}
现在我想调用函数 getStringToMyAndroid(&#34;来自android&#34的这个字符串;)并在我的Android上获得返回的 myJsString ,所以我可以使用<稍后在我的Android上使用strong> myJsString ;
我知道我可以使用
WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")
调用JS函数但我想从JS函数
获取字符串或值注意:我的Android运行在最低SDK Android 3.0蜂窝
答案 0 :(得分:15)
对于API级别&lt; 19只有使用JavascriptInterface(我的首选方法,下面)或者劫持OnJsAlert方法并使用alert()
对话框的解决方法。这意味着您无法将alert()
函数用于其预期目的。
查看:强>
WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")
<强> JsInterface:强>
public class JsInterface() {
@JavascriptInterface
void receiveString(String value) {
// String received from WebView
Log.d("MyApp", value);
}
}
<强>使用Javascript:强>
function doStringToMyAndroid(stringFromAndroid){
var myJsString = "Hello World" + ;
// Call the JavascriptInterface instead of returning the value
window.AndroidApp.receiveString(myJsString);
}
但是在API Level 19+上,我们现在有了evaluateJavascript方法:
WebView.evaluateJavascript("(function() { return getStringToMyAndroid('" + myJsString + "'); })();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.d("LogName", s); // Returns the value from the function
}
});