ローカルに保存してあるHTMLを表示させるアプリのサンプルを作ってみました。
WebViewのaddJavascriptInterface()をつかえば、
Javascript から Androidのメソッドを呼び出すこともできます。
ローカルにおくためのHTMLは、
assetsフォルダに保存しておけば、file: でアクセスできます。
(assets/index.htmlだったら、file://android_asset/index.htmlでアクセスできる)
サンプルです。
HelloHTMLActivity.java
package jp.android.hellohtml;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.webkit.WebView;
import android.widget.Toast;
public class HelloHTMLActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView wv = new WebView(this);
wv.getSettings().setJavaScriptEnabled(true);
MyJSObj jsobj = new MyJSObj(this);
wv.addJavascriptInterface(jsobj, "myobj");
setContentView(wv);
wv.loadUrl("file:///android_asset/index.html");
}
class MyJSObj {
private Context context;
public MyJSObj(Context c) {
this.context = c;
}
public void showToast(String str) {
Log.d("tag", str);
Toast.makeText(context, str, Toast.LENGTH_LONG).show();
}
public void vibration() {
Vibrator vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(2000);
}
}
}
addJavascriptInterface()は第1引数はjavascriptにバインドしたいオブジェクト、第2引数はjavascriptでアクセスするオブジェクトの名前を指定します。
今回は、MyJSObjのメソッドにアクセスできるようにします。
showToast() はただのtoastの表示、
vibration() は2秒間振動します。
Vibratorを使うときは、
android.permission.VIBRATE
の設定を忘れずに。
index.html
<html>
<head>
<title>test content</title>
<script type="text/javascript">
function showText() {
myobj.showToast("test");
}
function vibration() {
myobj.vibration();
}
</script>
</head>
<body>
<div>hello</div>
<input type="button" value="toast" onclick="showText();" />
<input type="button" value="vibe" onclick="vibration();" />
</body>
</html>
実行結果
実行結果はただのHTMLですが、
toastをクリックすればtoastがでて、
vibeをクリックすれば、きちんと2秒間振動することを確認しました。
0 件のコメント:
コメントを投稿