我想从我的Java Android上的JS函数中获得值
样本,
function getStringToMyAndroid(stringFromAndroid){
var myJsString = "Hello World" + ;
return myJsString;
}
现在我想调用函数getStringToMyAndroid(“来自安卓的字符串”),并在我的Android上获得返回的myJsString,这样以后我就可以在Android上使用myJsString;
我知道我可以用
WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")
调用JS函数,但我希望从JS函数中获取字符串或值。
注意:我的android运行在最小SDKAndroid3.0蜂窝上
发布于 2014-08-01 07:27:24
对于API级别< 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级别的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
}
});
https://stackoverflow.com/questions/25074903
复制相似问题