[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();
}
}
| << 前へ | 次へ >> |