Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用javascript函数并从javascript函数获取返回值_Javascript_Android - Fatal编程技术网

如何调用javascript函数并从javascript函数获取返回值

如何调用javascript函数并从javascript函数获取返回值,javascript,android,Javascript,Android,我想从Java Android上的JS函数中获取值 样本 function getStringToMyAndroid(stringFromAndroid){ var myJsString = "Hello World" + ; return myJsString; } 现在我想调用函数getStringToMyAndroid(“来自android的此字符串”),并在我的android上获取返回的myJsString,以便以后在我的android上使用myJsString 我知道我可

我想从Java Android上的JS函数中获取值

样本

function getStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   return myJsString;
}
现在我想调用函数getStringToMyAndroid(“来自android的此字符串”),并在我的android上获取返回的myJsString,以便以后在我的android上使用myJsString

我知道我可以用

WebView.loadUrl("javascript:getStringToMyAndroid('This string from android')")
调用JS函数,但我想从JS函数中获取字符串或值


注意:我的android运行在minimum SDK android 3.0 honeycomb上,API级别<19时,只有使用JavascriptInterface(下面是我的首选方法)或劫持OnJsAlert方法并使用
alert()
对话框的变通方法。这意味着您不能将
alert()
函数用于其预期用途

查看:

WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")
public class JsInterface() {
    @JavascriptInterface
    void receiveString(String value) {
        // String received from WebView
        Log.d("MyApp", value);
    }
}
function doStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   // Call the JavascriptInterface instead of returning the value
   window.AndroidApp.receiveString(myJsString);
}
JsInterface:

WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")
public class JsInterface() {
    @JavascriptInterface
    void receiveString(String value) {
        // String received from WebView
        Log.d("MyApp", value);
    }
}
function doStringToMyAndroid(stringFromAndroid){
   var myJsString = "Hello World" + ;
   // Call the JavascriptInterface instead of returning the value
   window.AndroidApp.receiveString(myJsString);
}
Javascript:

WebView.addJavascriptInterface(new JsInterface(), "AndroidApp");
WebView.loadUrl("javascript:doStringToMyAndroid('This string from android')")
public class JsInterface() {
    @JavascriptInterface
    void receiveString(String value) {
        // String received from WebView
        Log.d("MyApp", value);
    }
}
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
    }
});
WebView.evaluateJavascript(((函数(){return getStringToMyAndroid(““+myJsString+”);})();”,new ValueCallback(){
@凌驾
公共void onReceiveValue(字符串s){
Log.d(“LogName”,s);//从函数返回值
}
});

你的目标是什么版本的Android?嗨@RGraham我使用的最低Android目标是API 11 Android 3.0蜂巢,谢谢:)嗨,谢谢你的代码和解释,我有一个问题是doStringToMyAndroid是JS的函数吗??loadUrl(“dostringtomyaroid('This string from android')”),谢谢,我现在就试试:)@ilovebali抱歉,是的,这是一个Javascript函数。替换你的
getStringToMyAndroid
-我已经更新了代码以使其更清晰我尝试了你的代码但没有成功:(,我也尝试了使用使我的应用程序崩溃的最后一个代码:),我要做的是从JsInterface创建新的java类,并从我的webView
webView.addJavascriptInterface(新的JsInterface(),“AndroidApp”)调用它; WebView.loadUrl(“javascript:dostringtomyaroid('This string from android')”)
,需要建议,谢谢:)您在类
公共类JsInterface(){@JavascriptInterface void receiveString(string value){//string receivefrom WebView Log.d(“MyApp”,value);}}
您有“()”在类名之后,我删除了它,因为我得到了错误:(9,25)错误:“{”预期,然后我删除了类名中的“()”,我没有得到错误,但代码不工作,谢谢:)