その 他 のウェジット WebView クラス WebView クラスは 簡 易 的 なブラウザ 機 能 を 提 供 してくれるクラスです ここでは WebView ク ラスの 使 い 方 について 確 認 していきます WebView クラスの 定 義 を 確 認 します クラス 継 承 は 次 のようになっています java.lang.object android.view.view android.view.viewgroup android.widget.absolutelayout android.webkit.webview WebView クラスは ViewGroup クラスのサブクラスです ViewGroup クラスのサブクラスにはレイアウ トなどのように 他 のビューを 内 部 に 持 つクラスとなっています main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/linearlayout01" 1
android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:text="go" android:id="@+id/buttongo" android:layout_width="wrap_content" android:layout_height="wrap_content"></button> <EditText android:text="http://" android:id="@+id/texturl" android:layout_width="fill_parent" android:layout_height="wrap_content"></edittext> </LinearLayout> <WebView android:id="@+id/webview01" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> イ ン タ ー ネ ッ ト へ の ア ク セ ス は 権 限 が 必 要 な た め マ ニ フ ェ ス ト フ ァ イ ル (AndroidManifest.xml)に 許 可 の 記 述 をしておく <uses-permission android:name="android.permission.internet" /> </manifest> WebViewSample01.java package web.view; import android.app.activity; import android.os.bundle; import android.text.spannablestringbuilder; import android.view.view; import android.view.view.onclicklistener; import android.webkit.webview; import android.widget.button; import android.widget.edittext; 2
public class WebViewSample01 extends Activity implements OnClickListener { private EditText texturl; private Button buttongo; private WebView webview; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); texturl = (EditText) this.findviewbyid(r.id.texturl); buttongo = (Button) this.findviewbyid(r.id.buttongo); buttongo.setonclicklistener(this); webview = (WebView)this.findViewById(R.id.WebView01); /* 外 部 URL アクセス 用 の 機 能 をセットする(プロジェクト 内 部 の HTML ファイルを 表 示 する 場 合 は 以 下 の 2 行 記 述 は 不 要 ) */ webveiw.setwebviewclient(new WebViewClient()); /* ウェブビューの 設 定 情 報 を 取 り 出 して (javascript の 設 定 はデフォ ルトで 無 効 のため)javascript を 有 効 にする */ webveiw.getsettings().setjavascriptenabled(true); } webview.loadurl("http://www.yahoo.co.jp/");// 画 面 に 読 み 込 む public void onclick(view arg0) { /* SpannableStringBuilder クラスは 文 字 列 を 内 部 に 持 つバッファー(デ ータ 溜 め)クラス */ SpannableStringBuilder url = (SpannableStringBuilder) texturl.gettext(); webview.loadurl( url.tostring() );// 画 面 に 読 み 込 む 3
} } エミュレータの 注 意 点 背 後 にプロキシがあるような 環 境 だとそのままではインターネットに 出 ることができない ので プロキシの 設 定 が 必 要 になります 以 下 その 手 順 1. APN(Access Point Name)の 作 成 HOME> 設 定 >ワイヤレス 設 定 >モバイルネットワーク>アクセスポイント 名 >MENU> 新 し い APN から 新 しい APN を 作 成 2. APN の 設 定 プロキシ : プロキシサーバ 名 ( 名 前 解 決 ができない 場 合 は IP アドレス) ポート : 使 用 するポート 番 号 ( 例 :8080) ユーザ 名 : ユーザ 名 ( 認 証 が 必 要 な 場 合 ) パスワード: パスワード ( 認 証 が 必 要 な 場 合 ) 以 下 が 設 定 画 面 例 4
SDK1.6 の 場 合 はこれで 問 題 ないと 思 ったのだが ところが SDK2.0 からだとこの 設 定 でも 全 く 繋 がらないですし 1.6 の 場 合 でも 繋 がったり 急 に 接 続 できなくなったりと 非 常 に 不 安 定 いつもプロキシ 設 定 には 苦 労 させられます 今 の 所 繋 がらない 原 因 は 不 明 WebView でローカルの HTML を 読 み 込 む help.html (プロジェクト 内 の assets フォルダに help.html を 作 成 ) <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-31j"> <title>help Page</title> </head> <body> <h1>help</h1> May I help you? </body> </html> main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="help" /> <WebView android:id="@+id/webview01" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 5
MyHTML_WebViewSample.java package ui.web; import android.app.activity; import android.os.bundle; import android.webkit.webview; public class MyHTML_WebViewSample extends Activity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); WebView webview = (WebView)findViewById(R.id.WebView01); //ローカルファイルのパス 指 定 をして 読 み 込 む webview.loadurl("file:///android_asset/sample.html"); // 以 下 は 文 字 列 として 読 み 込 む 場 合 の 記 述 例 // String html = "<!DOCTYPE html>"; // html += "<html lang= "ja ">"; // html += "<head>"; // html += "<meta charset= "utf-8 ">"; // html += "</head>"; // html += "<body>"; // html += "<h1>help</h1><h2>こちらヘルプです ご 用 は 何 でしょうか? </h2>"; // html += "</body></html>"; // webview.loaddata(html, "text/html", "utf-8"); } }//class_end 以 上 6