javascriptとandroidの間で値を渡したり返したりする電話用のプラグインを作成したいと思います。
誰かがこれを行う方法について何かアイデアを提案できますか?
javascriptとandroidの間で値を渡したり返したりする電話用のプラグインを作成したいと思います。
誰かがこれを行う方法について何かアイデアを提案できますか?
実際、これはそれほど難しいことではありません。ここでは、ページ内のjavascriptからネイティブコードを呼び出す方法とその逆の方法を示します。
Webビュー内からのネイティブコードの呼び出し:
Webビューを作成するときに、javascriptインターフェイス(基本的に、メソッドがWebビューのjavascriptを介して呼び出されるように公開されるjavaクラス)を追加します。
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
javascriptインターフェースクラス自体の定義(これは私の別の答えから取った模範的なクラスであり、ネイティブインテントでビデオを開きます)
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void startVideo(String videoAddress){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
activity.startActivity(intent);
}
}
ここで、このコードをページのHTMLから呼び出したい場合は、次のメソッドを提供します。
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
簡単ですね。
ネイティブコードからのjavascriptコードの呼び出し:
これも簡単です。WebViewにロードされたHTMLのコードで、javascript関数が定義されているとします。
<script>
function function(){
//... do something
}
</script>
次に、次のようなネイティブコードでWebViewを介してこの関数を呼び出します。
webView.loadUrl("javascript:function()");
これは、PhoneGapプラグインを作成するためのチュートリアルです。また、 ChildBrowserプラグインの説明は特に優れています。