将数组从android传递到JavaScript

将数组从android传递到JavaScript,javascript,android,Javascript,Android,我浏览了这里分享的所有帖子,仍然找不到正确的答案来运行我的代码并使我的应用程序正常运行。如果你们中有人能在这个问题上帮助我,我将不胜感激 我正在调用有界函数getLocation(),如前所述:。getLocation函数绑定到Android中的MyHandler,如下所述: public class MainActivity extends Activity { WebView webView; private Handler mHandler = new Handler (

我浏览了这里分享的所有帖子,仍然找不到正确的答案来运行我的代码并使我的应用程序正常运行。如果你们中有人能在这个问题上帮助我,我将不胜感激

我正在调用有界函数getLocation(),如前所述:。getLocation函数绑定到Android中的MyHandler,如下所述:

public class MainActivity extends Activity {

    WebView webView;
    private Handler mHandler = new Handler ();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface (new Object(){
                       public void getLocation(){
                          mHandler.post (new Runnable(){
                            public void run(){
                               String[] values = {"3.16802","101.71309"};
                               webView.loadUrl("javascript:setLocation("+values+")");
                            }
                          });
                       }
                }, "MyHandler");
    webView.loadUrl("file:///android_asset/example/quick-start-example.html");

    }
}
Android中的函数setLocation调用JavaScrip中的方法,如下所示,这里我们将数组传递到JS函数中:

function setLocation(val){
    var lat = val[0];
    var lng = val[1];
}

请对此提出建议。谢谢。

我认为你不可能轻松地完成像数组这样的复杂对象。你开始进入JSON领域

事实上,我发现了一些使用JSON来实现这一点的示例代码


问题:要将数组数据从Java推送到JavaScript和/或从JavaScript推送到Java

^

myWebView.setWebViewClient(new WebViewClient(){
    public void onPageFinished(WebView view, String url){
        myWebView.loadUrl("javascript:setLocation("+values+")");
    }
});
或者在js函数中获取数据

   var t1 = Android.displayName();

您可能应该尝试以下方法:

Gson gson = new Gson();
String data = gson.toJson(someArray);

当您在Javascript函数中传递类似于数组或列表的对象时,首先需要将该对象转换为JSON格式,如下所示:

 String[] values = {"3.16802","101.71309"};
 webView.loadUrl("javascript:setLocation('"+new JSONArray(values)+"')");
function setLocation(input){
var value=JSON.parse(input);
var lat = value[0];
var lng = value[1];
}
在Java脚本函数中,您必须再次解析JSON格式的输入,如下所示:

 String[] values = {"3.16802","101.71309"};
 webView.loadUrl("javascript:setLocation('"+new JSONArray(values)+"')");
function setLocation(input){
var value=JSON.parse(input);
var lat = value[0];
var lng = value[1];
}

请告知我如何在加载页面上从android调用JavaScript函数,这意味着并没有点击按钮或应用程序的链接。我想在应用程序加载时从android调用javascript函数。请给出建议。更正:如何在加载WebView时调用JavaScript函数。