2012-03-06 42 views
0

我一直在尋找關於javascript與android webview的關係的正確解釋。任何人都可以告訴我:如果我在線的HTML頁面和所有需要的JavaScript文件,使我需要在HTML頁面上工作,我可以將它移植到android。Webview&Javascript關係

例如可我的JavaScript文件移動到Android應用程序的本地文件夾(如果是這樣:哪個文件夾?),並從應用程序調用一個函數。那麼我能從這些文件中的一個獲得javascript函數的結果嗎?

如果任何人有與此相關的,你可以點我在正確的方向上的任何教程或資源?

回答

1

當你有一個的WebView你可以設置一個WebchormeclientWebviewclient,則webchromeclient將類似於您的Chrome桌面瀏覽器。另一種選擇是使用Webviewclient這個網頁流量的客戶端可以根據需要將可配置,您可以添加一個「接口」來稱呼從Java代碼JavaScript函數,或Java函數從您的JavaScript代碼。 該接口是一個類,可以是這樣的: 最後一類JavaScriptInterface {

 public void myalert(String message){ 
      new AlertDialog.Builder(wview.getContext()).setMessage(message).setNeutralButton("Ok",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }).show(); 

     } 

web視圖具有「附加」這一類的JavaScript的方法:

wview.addJavascriptInterface(new JavaScriptInterface(), "interface); 

一旦你添加JavascriptInterface,您可以從Javascript代碼調用該方法myalert(「HI」),這樣做,你將不得不做一些事情,如:

window.interface.myalert("hi") //This is called in the Javascript 

,如果你想從Java代碼調用JavaScript你可以做這樣的事情:

wview.loadUrl("javascript:changeValues('"+name+"','"+id+"')");//this will call a Javascript function called changeValues, and will pass to variables (name, id) 

綜上所述,在webchromeclient更容易使用,但webviewclient可以讓你更多的配置。之前,也許你想了解一下phonegap,這是一個開發Webapps x平臺的框架。 希望你這個快速解釋能幫助你一點。

PS:對於第二個選項,您可以存儲所有你的SD卡需要。

+0

乾杯的答覆,但JavaScript文件必須放置在哪裏?並說,如果我有一個叫做'myAlert'的函數叫做alerts.js,我需要提供這個文件名還是android只讀了它們? – Katana24 2012-03-06 22:21:45

+0

您可以將javascript文件存儲在SD卡中(您將能夠修改JavaScript文件),在asset_folder中(您將能夠使用它但不能修改它),或者將其作爲普通頁面存儲在服務器中,腳本只會在您連接到互聯網時才加載。 – jsaye 2012-03-06 22:26:22

+0

如果我當瀏覽器加載網頁是沒有錯的,這也加載所有的JavaScript,所以你不會有引用該文件,但林不知道... – jsaye 2012-03-06 22:27:25