Movatterモバイル変換


[0]ホーム

URL:


ネイティブコードから WebView 内の JavaScript を実行する方法。今回は jQuery Mobile を利用

当サイトの姉妹サイトであるjQuery 入門 にて、以前jQuery Mobile でプログラムからページを切り替える なる記事を書きました。

jQuery Mobile は基本的にページの遷移などもある程度自動的に、"モバイルアプリ" っぽく処理してくれるわけですが、ボタンなどをクリック、何らかの条件分岐、ページ遷移、という流れでは自分でページ遷移をしていしないといけない。

このときに必要になる処理として、changePage メソッドで明示的にページを切り替える、ということです。

WebView と HTML5、特に jQuery Mobile を組み合わせたハイブリット構成でモバイルアプリケーションを構成する場合、ネイティブコード側で何らかの処理をして、その結果、WebView 内のページ遷移をしないといけない場合があるでしょう。

こうした場合にどうすれば良いのか考えます。

要はネイティブコードから WebView 内にロードされた HTML/JavaScript ページの JavaScript を実行する方法です。

jQuery Mobile のメソッドを呼ぶ

今回は特に、上記のように jQuery Mobile を利用した場合を考えて、「ネイティブコードのボタンをクリックして、WebView 内の jQuery Mobile のページが切り替わる」という例を取り上げてみます。

WebView に jQuery Mobile のページをロード。画面下側にネイティブのボタン (HTML のボタンではない) を配置。

jQuery Mobile と WebView

そのボタンを押すと...

jQuery Mobile と WebView

jQuery Mobile のページが切り替わる、という流れです。

つまり、ネイティブコードで changePage メソッドを呼ぶ、というわけです。

前置きは長くなりましたが、実は簡単なことです。

コードは次の通りです。

packagecom.keicode.android.test.webviewtest2;importandroid.os.Bundle;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.webkit.WebChromeClient;importandroid.webkit.WebSettings;importandroid.webkit.WebView;importandroid.webkit.WebViewClient;importandroid.webkit.GeolocationPermissions.Callback;importandroid.widget.Button;publicclassMainActivityextendsActivityimplementsOnClickListener{WebViewwebView;ButtongoButton;@SuppressLint("SetJavaScriptEnabled")@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);goButton=(Button)findViewById(R.id.goButton);goButton.setOnClickListener(this);webView=(WebView)findViewById(R.id.webview1);webView.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){returnfalse;}});webView.setWebChromeClient(newWebChromeClient(){@OverridepublicvoidonGeolocationPermissionsShowPrompt(Stringorigin,Callbackcallback){callback.invoke(origin,true,false);}});WebSettingswebSettings=webView.getSettings();webSettings.setJavaScriptEnabled(true);webView.loadUrl("http://jquery.keicode.com/mobile/demo5/");}@OverridepublicvoidonClick(Viewv){switch(v.getId()){caseR.id.goButton:webView.loadUrl("#"#" として、呼びたい JavaScript コードを書いているだけです。今回はそこで単に changePage メソッドを呼んだ、というわけです。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

Android 開発

Androidプログラミング基礎

Android 携帯・アプリの話題

関連サイト

© 2025 Android 開発入門

[8]ページ先頭

©2009-2025 Movatter.jp