2013-07-29 72 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+")"); 
    } 
});