[WebView].addJavascriptInterface( インスタンス , 名前 );このaddJavascriptInterfaceは、第1引数のインスタンスを、第2引数で指定した名前でJavaScript内から利用できるようにするものです。例えば、
webview01.addJavascriptInterface(new Test(),"test");こんな具合に実行すると、Testというクラスのインスタンスを、testという名前のオブジェクトとしてJavaScriptから利用できるようになります。
webview01.addJavascriptInterface(new JSObj(this), "jsobj");このようにして、JSObjのインスタンスを、jsobjという名前でJavaScriptから使えるようにしています。ここで表示しているHTMLのソースコードを見てみると、JavaScriptのスクリプトで、
function init(){ jsobj.showMsg('Hello!!'); }こんな形でjsobjのshowMsgを呼び出していることがわかるでしょう。このinit関数を、<body>のonloadで呼び出すようにしていた、というわけです。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package jp.tuyano.sample; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.webkit.WebView; import android.widget.Toast; public class MySample extends Activity { public WebView webview01; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webview01 = (WebView)findViewById(R.id.WebView01); webview01.getSettings().setJavaScriptEnabled(true); webview01.addJavascriptInterface(new JSObj(this), "jsobj"); String data = "<html><head><script type=\"text/javascript\">" + "function init(){ jsobj.showMsg('Hello!!'); }" + "</script></head><body onload=\"init()\">" + "<h1>Sample</h1><p>JavaScript test.</p></bod></html>"; webview01.loadData(data,"text/html","utf8"); } } class JSObj { private Context context; public JSObj(Context c){ context = c; } public void showMsg(String msg) { Toast.makeText(context, msg,Toast.LENGTH_LONG).show(); } }
<< 前へ | 次へ >> |