これは以前の質問と重複しています。しかし、私はあなたに出発点を与えようとします。
あなたの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の質問で行われた他の例を試してみてください。この場合、私は上記で提供されたものが十分なものでなければならないと言います。
[重複](https://stackoverflow.com/questions/15673509/calling-javascript-function-from-an-android-activity) –
私は、あなたがしたいかもしれないものを説明する答えを追加しました行う。また、次回はあなたが試したことを試してみたり、何か特別な研究をしてみてください。それは下降音に役立つでしょう、SOコミュニティーはときどき過酷になることがありますが、私たちが助けに達する前に地域社会から特定のことが期待されるためです。私は難しいことを学んだ。 –