3

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

如前所述,我在标签中调用有界函数 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];
}

请就此提出建议。谢谢你。

4

5 回答 5

1

我不认为你可以轻松地做一个像数组这样的复杂对象。您开始进入 JSON 领域。

事实上,我找到了一些使用 JSON 来完成此操作的示例代码。

问题:您想将数组数据从 Java 推送到 JavaScript 和/或从 JavaScript 推送到 Java http://androidcookbook.com/Recipe.seam?recipeId=4426&title=Exchang%20Array%20Data%20between%20Java%20and%20JavaScript

于 2013-07-29T18:58:26.523 回答
0

^以上评论,一旦您的页面完成加载,您可以使用 onPageFinished 执行 loadurl 部分,如下所示:

myWebView.setWebViewClient(new WebViewClient(){
    public void onPageFinished(WebView view, String url){
        myWebView.loadUrl("javascript:setLocation("+values+")");
    }
});
于 2016-12-15T23:42:56.773 回答
0
 @JavascriptInterface
    public String[] displayName() {
        String ar[] = new String[2];
        ar[0]= "name1";
        ar[1] =  "name2";
        return ar;
    }

或在 js 函数中获取数据

   var t1 = Android.displayName();
于 2018-12-04T08:09:46.723 回答
0

你应该试试这个:

Gson gson = new Gson();
String data = gson.toJson(someArray);
于 2019-08-09T14:15:29.373 回答
0

每当您在 Javascript 函数中传递 Array 或 List 之类的对象时,首先,您需要将该对象转换为 JSON 格式,如下所示:

 String[] values = {"3.16802","101.71309"};
 webView.loadUrl("javascript:setLocation('"+new JSONArray(values)+"')");

在 Java 脚本函数中,您必须解析 JSON 格式的输入,如下所示:

function setLocation(input){
var value=JSON.parse(input);
var lat = value[0];
var lng = value[1];
}
于 2020-09-25T08:59:32.727 回答