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