2017-09-04 70 views
1

我知道如何在JavaScrip t代碼中調用Java方法。它由@JavascriptInterface註釋完成。但是,如果我想通過Android確定哪個方法JS應該被調用?我在JS中調用Android Dialog,使用上面提到的註釋,在那裏我得到了switch語句,它應該決定哪個函數應該在JS中調用。我使用了一個不起作用的標誌,因爲對話框不同步,所以方法showDialog()在對話框啓動之前完成。有什麼方法可以在另一側達到Android-JS通信?對Android WebView中的@JavascriptInterface?

@JavascriptInterface 
public int showDialog(){ 
    new AlertDialog.Builder(this.activity) 
      .setTitle("Share iamge as...") 
      .setItems(new CharSequence[]{"Image", "PDF document", "Print"}, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        switch (which){ // this switch should determine which JS function I call 
         case 0: chosenMethod = 0; // here should be called JS function (eg. exportImage() from JS code) 
          Log.v("Dialog onClick()", "method chosen" + chosenMethod); 
          break; 
         case 1: chosenMethod = 1; 
          Log.v("Dialog onClick()", "method chosen" + chosenMethod); 
          break; 
         case 2: chosenMethod = 2; 
          Log.v("Dialog onClick()", "method chosen" + chosenMethod); 
          break; 
        } 
       } 
      }) 
      .create().show(); 
    Log.v("Dialog out of onClick", "method chosen" + chosenMethod); 
    return chosenMethod; 
} 
+0

你想知道'如何在WebView中調用JS? –

+0

@VladMatvienko是的,會發布一些代碼 – soommy12

回答

1

你可以做

webView.loadUrl("javascript:doSomething()"); 

任何時候網頁在網頁視圖加載之後,運行JS功能。

如果它不起作用:請檢查您的webview設置(安全/ js)。

+0

我應該通過我的'WebView'的方法或有另一個選項來調用'loadUrl'嗎? – soommy12

+0

您最好打開演示者/活動/片段中的對話框,並在對話框中使用回調,返回其創建者。演示者/活動/片段中的回調實現可以在WebView上執行JS調用。但這實際上是另一個問題。祝你好運 – Frank

+0

它正在像一個魅力,但我調用函數時遇到了一個問題:'未捕獲的ReferenceError:methodName未定義' – soommy12