2013-07-29 60 views
3

我经历了在这里共享的所有帖子,我仍然无法找到适当的答案来运行我的代码并使我的应用程序正常工作。如果您有任何人可以帮我解决这个问题,我会很感激。将数组从android传递到JavaScript

我正在调用有界函数getLocation(),如上所述:。

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]; 
} 
如在下文提及的的getLocation函数为界MyHandler的Android中

请对此提出建议。谢谢。

回答

1

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

事实上,我发现一些使用JSON来完成这个示例代码。

问题:你想从Java推送阵列数据,JavaScript和/或从JavaScript到Java http://androidcookbook.com/Recipe.seam?recipeId=4426&title=Exchanging%20Array%20Data%20between%20Java%20and%20JavaScript

+0

请教如何从加载页面的android调用JavaScript函数,这意味着没有点击按钮或从应用程序的链接。我想在应用程序加载时从android调用javascript函数。请指教。 –

+0

更正:如何在加载WebView时调用JavaScript函数。 –

0

^上述评论,你可以使用onPageFinished执行使用loadURL部分当网页加载完成这样的:

myWebView.setWebViewClient(new WebViewClient(){ 
    public void onPageFinished(WebView view, String url){ 
     myWebView.loadUrl("javascript:setLocation("+values+")"); 
    } 
});