- 文字列にした問題の答えを出力するためにjavascirptでevalする
package com.example.t017_wevview_javascript;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.LinearLayout;
public class Main extends Activity {
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavascriptAdapter(), "android");
webView.loadUrl("file:///android_asset/eval.html");
button = new Button(this);
setContentView(button, new LinearLayout.LayoutParams(200, 100));
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String expression = "(1 + 5) * (3 + 4)";
webView.loadUrl("javascript:callEval('" + expression + "')");
}
});
}
private Handler mHandler = new Handler();
class JavascriptAdapter {
public void getAnswerFromJS(final String answer) {
mHandler.post(new Runnable() {
public void run() {
Log.d("TAG", answer);
button.setText(answer);
}
});
}
}
}
eval.html (assets)
<script type="text/javascript">
function callEval(arg) {
window.android.getAnswerFromJS(eval(arg));
}
</script>