テクパー2020 テクニカルヘルパー |
アンドロイドアプリ開発 |
◆ JavaScripの連携 ・ assets フォルダー内にJavaScriptのあるWebページを作成します ・ WebページでJavaScriptを呼び出します |
【 実行 】 |
【 JavaScriptの結果 】 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <html> <head> <script language="javascript"> function changeImage() { alert("A"); document.getElementById("image").src="bt_img_square_back.png"; alert("B"); } </script> </head> <body> <h4 style="color:magenta">JavaScript連携のチェック</h4> 矢印をクリックしてください <a onClick="window.checker.onClick()"> <img id="image" src="bt_img_square_go.png"/></a> </body> </html> |
package com.proto.webjavascriptif; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; //import android.view.Window; public class WebJavaScriptIF extends Activity { // ハンドラー private Handler handler; // Webビュー private WebView webView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ウィンドウタイトルの非表示 // requestWindowFeature(Window.FEATURE_NO_TITLE); // setContentView(R.layout.main);書き換え // ハンドラーの生成 handler=new Handler(); // Webビューの生成 webView=new WebView(this); WebSettings settings=webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setSaveFormData(false); settings.setSavePassword(false); settings.setSupportZoom(false); webView.setWebChromeClient(new ChromeClient()); webView.addJavascriptInterface(new JSInterface(),"checker"); webView.loadUrl("file:///android_asset/checker.html"); setContentView(webView); } // JavaScriptインタフェース public final class JSInterface { // コンストラクタ public JSInterface() { } // クリックイベントの処理 public void onClick() { handler.post(new Runnable() { public void run() { webView.loadUrl("javascript:changeImage()"); } }); } } // クロームクライアント public final class ChromeClient extends WebChromeClient { @Override // アラートイベントの処理 public boolean onJsAlert( WebView view,String url,String message,JsResult result) { android.util.Log.e("",message); result.confirm(); return true; } } } |
android.os.Handler のHandlerクラスの生成 public Handler () |
android.webkit.WebView のWebViewクラスの生成、指定 public WebView (Context context) // JavaScriptの処理実装(クロムハンドラ) public void setWebChromeClient (WebChromeClient client) // JavaScriptのバインド(クJavaScriptのインスタンス,公開名) public void addJavascriptInterface (Object obj, String interfaceName) // JavaScriptのURL(URL) public void loadUrl (String url) |
android.webkit.WebSettings のWebSettingsクラスの生成、指定 (WebViewのコンテンツの設定管理) // JavaScriptの実行許可(true:可,false:不可) public synchronized void setJavaScriptEnabled (boolean flag) // フォームデータの保存指定(true:保存,false:不要) public void setSaveFormData (boolean save) // パスワードの保存指定(true:保存,false:不要) public void setSavePassword (boolean save) // ズームのサポート有無(true:有,false:無) public void setSupportZoom (boolean support) |
android.app.Activity のActivityクラスの指定 // アクティビティのビューに配置(ビュー) public void setContentView (View view) |
android.os.Handler のHandlerクラスの生成 // クリックイベントの処理 public final boolean post (Runnable r) |
Copyright (C) 2010 プログラミングのテクニックをあなたに!!(リトル・ヘルパー) All Rights Reserved. |