ilo*_*ali 7 javascript android
我想从我的Java Android上的JS函数中获取值
样品,
function getStringToMyAndroid(stringFromAndroid){
var myJsString = "Hello World" + ;
return myJsString;
}
Run Code Online (Sandbox Code Playgroud)
现在我想要调用函数getStringToMyAndroid("来自android的这个字符串")并在我的Android上获取返回的myJsString,所以我可以稍后在我的Android上使用myJsString ;
我知道我可以使用
WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")
Run Code Online (Sandbox Code Playgroud)
调用JS函数,但我想从JS函数中获取字符串或值
注意:我的Android运行在最小的SDK Android 3.0蜂窝上
Cod*_*gue 15
对于API级别<19,只有使用JavascriptInterface(我的首选方法,下面)或者劫持OnJsAlert方法并使用alert()对话框的解决方法.这意味着您不能将该alert()功能用于其预期目的.
视图:
WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")
Run Code Online (Sandbox Code Playgroud)
JsInterface:
public class JsInterface() {
@JavascriptInterface
void receiveString(String value) {
// String received from WebView
Log.d("MyApp", value);
}
}
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
function doStringToMyAndroid(stringFromAndroid){
var myJsString = "Hello World" + ;
// Call the JavascriptInterface instead of returning the value
window.AndroidApp.receiveString(myJsString);
}
Run Code Online (Sandbox Code Playgroud)
但是在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
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10996 次 |
| 最近记录: |