| テクパー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. |  |