2017-06-06 69 views
-2

我與JavaScript函數的HTML文件和Android的用戶界面來調用這些功能。我不知道如何在Android的Web視圖中調用JS。請幫忙。 例如:調用Web視圖中的JavaScript在Android

//JavaScript 
<script> 
function doSomething(){ 
//do something 
} 
</script> 

//Android Java 
Button clickButton = (Button) findViewById(R.id.button); 
clickButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //call JS function doSomething() 
     } 
}); 
+1

[複製](https://stackoverflow.com/questions/15673509/calling-javascript-function-from-an-android-activity) –

+0

我添加了一個答案,說明您可能想什麼做。此外,下次試着展示你已經嘗試或做了一些額外的研究。這將有助於降低成本,SO社區有時可能會嚴厲批評,但這是因爲在我們尋求幫助之前,社區會期望某些事情。我已經瞭解到這一點。 –

回答

0

這是以前的問題的重複。但我會盡力給你一個出發點。

之前加載的網頁視圖(但你已經創建的網頁視圖的實例後),您需要設置一個Javascript接口類。

基本上是:

mWebView.addJavascriptInterface(WebInterface(this), "Android"); 
// more settings or whatever 
mWebView.loadUrl("yourUrl.html.whatever"); 

界面將生活,無論你想,如果它是一個簡單的項目,你不妨把它在MainActivity類的內部類。它是由你知道如何構建應用程序,但類的基本要點是這樣的:

public class WebInterface { 
    Context mContext; 
    public WebInterface(Context c) { this.mContext = c;} 

    @JavascriptInterface 
    public void showAlert() { 
    Toast.makeText(mContext, "This is being called from the interface", Toast.LENGTH_SHORT).show(); 
    } 
} 

注意,類的名稱是相同的名稱爲您添加到了一個網頁流量。這點很明顯,但你需要讓它們保持一致。現在

,你可能想知道有關「Android」的一部分。檢查一下,在你的JS代碼中,你會這樣做:

<script> 
function doSomething(){ 
Android.showAlert(); 
} 
</script> 

你能在這裏看到模式嗎?由於您在WebInterface類中定義的方法被稱爲showAlert(),因此Android是您希望在JS內部運行的Java代碼的標識符,您可以使用Android標識符在WebInterface內將其稱爲它。這可以在任何你想要的方式命名,但爲了簡單起見,我已經把它忘在Android

嘗試,看看其他做題,看其他的例子,如果他們匹配你想要做什麼。在這種情況下,我會說我上面提供的應該是綽綽有餘的。

0

首先加載包含JavaScript函數(S)的頁面,然後加載你想要的功能。 例子:

//JavaScript 

<script type="text/javascript" > 

function func(){ 

alert("Hello World!"); 

} 
</script> 

//Android 

WebView webView = (WebView) findViewById(R.id.myWebview); 
webView.setWebChromeClient(new WebChromeClient()); 
webView.loadUrl("file:///android_asset/HTML.html"); 

Button clickButton = (Button) findViewById(R.id.button); 
clickButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

      WebView webView = (WebView) findViewById(R.id.myWebview); 
      webView.loadUrl("javascript:func();"); 
    } 
});