ローカルファイル
ええと、ここに WebKit に内部生成した html 文字列を読み込ませて表示、なサンプルがある。
以下です。
package com.gclue.Webkit002; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; /** * WebViewを使ってローカルで作成したHTMLを表示 * * @author GClue, Inc. * @version 1.0 */ public class Webkit002 extends Activity { public void onCreate(Bundle icicle) { super.onCreate(icicle); // Webviewで表示させるHTMLを生成 String html = ""; html += ""; html += "<font>ローカルのHTMLを表示</font><br>"; html += "<table><tr><td>テーブルサンプル</td><td>内容</td></tr></table>"; html += ""; // Webの表示 WebView webView = new WebView(this); webView.loadData(html,"text/html", "utf-8");; setContentView(webView); } }
これ、HTML 文字列を外から読めれば使いマワシが効く、ってコトで木南さん本を参考に 8.2 節のローカルファイルの項の盛り込み検討をしてみる事に。
読みだしてる部分を以下に引用。
InputStream in; try { // ローカルファイルの読み出しストリームをオープン in = openFileInput(MEMO_FILE); } catch (FileNotFoundException e) { // ローカルファイルがない場合 // リソースのファイルをオープンする in = getResources().openRawResource( R.raw.initial_templete); } EditText et = (EditText)findViewById(R.id.edit_text); try { // UTF-8 のテキストファイルを読み出す BufferedReader reader = new BufferedReader( new InputStreamReader(in, "UTF-8")); String s; while((s = reader.readLine()) != null) { et.append(s); et.append("\n"); } } catch (IOException e) { Log.e("HelloLocalFile", e.toString()); }
ええと、テキストの記述によれば res/raw に initial_templete というファイルを云々とあるな。initial_template はファイル名な模様。これは別途確認必要だな。
後は String に読み込んだソレを格納して StringBufer に append して toString してあげれば良い。てか、それを WebView#loadData に渡してあげれば良いはず。
いちいちプログラムの中に html 文字列を書くのは面倒杉。
とりあえず
ここでエントリ投入しますが、元気があれば試験してみる予定ッス。
追記
試験してみます。以下がサンプルコード。
package jp.shuri.yamanetoshi.webkittest; import java.io.BufferedReader; public class WebKitTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String html = ""; InputStream in; in = getResources().openRawResource(R.raw.initial_template); try { BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); String s; StringBuffer et = new StringBuffer(); while((s = reader.readLine()) != null) { et.append(s); et.append("\n"); } html = et.toString(); } catch (IOException e) { Log.e("HelloLocalFile", e.toString()); } WebView webView = new WebView(this); webView.loadData(html,"text/html", "utf-8");; setContentView(webView); } }
パクりまくったナニ。以下が res/raw/initial_template の中身です。
<font>ローカルのHTMLを表示</font><br> <table><tr><td>テーブルサンプル</td><td>内容</td></tr></table>
ばっちり表示できてます。ここまでデキたらあとは中身を変えるだけざんす。