2017-06-06 3 views
-2

これらの関数を呼び出すには、JavaScript関数とAndroid UIでHTMLファイルを作成しました。私はAndroid上のWebビューでJSを呼び出す方法を知らない。助けてください。 例:AndroidのWebビューでjavascriptを呼び出す

//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

これは以前の質問と重複しています。しかし、私はあなたに出発点を与えようとします。

あなたのwebviewをロードする前に(しかし、あなたがwebviewのインスタンスを作成した後)、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(); 
    } 
} 

クラスの名前は、あなたが追加したものと同じ名前であることに注意してくださいwebview。この時点でこれはかなり明白ですが、同じである必要があります。

今、あなたはおそらく "Android"の部分について疑問に思います。これをチェックすると、JSコードで次のようになります:

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

ここでパターンを確認できますか? Androidは、WebInterfaceクラス内で定義したメソッドはshowAlert()と呼ばれ、という識別子を使用してWebInterface内で呼び出すため、JS内で実行するJavaコードの識別子です。これは任意の方法で名前を付けることができますが、簡単にするために私はAndroidに残しました。

他のSOの質問で行われた他の例を試してみてください。この場合、私は上記で提供されたものが十分なものでなければならないと言います。

0

最初にJavaScript関数を含むページを読み込み、必要な関数を読み込みます。 例:

//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();"); 
    } 
}); 
関連する問題