こんにちは、イノベーションオフィスの吉田です。
最近くしゃみがよく出るのですが皆さんは大丈夫でしょうか?
先日の Swift に続き今度は Android も触る機会が有ったのでまとめてみたいと思います。
Swift の記事はこちらです。
denen.hatenablog.com
というわけで、Android の WebView もそのままでは alert や confirm に対応してくれていないので実装していきましょう。
早速コードです。
private WebView webView1;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView1 = new WebView(this);
webView1.getSettings().setJavaScriptEnabled(true);
webView1.getSettings().setUserAgentString("My Browser App");
webView1.setWebViewClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(myApp.getContext())
.setTitle("My Browser App")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
})
.create()
.show();
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(myApp.getContext())
.setTitle("My Browser App")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
})
.create()
.show();
return true;
}
});
setContentView(webView1);
webView1.loadUrl("https://www.google.co.jp/");
}
ちょっと長いですが、そんなに難しいことはやっていないかと思います。
setWebViewClient というメソッドに onJsAlert や onJsConfirm というメソッドを持った WebChromeClient クラスを渡してやる感じですね。
そして Android だと AndroidManifest.xml に以下の記述を入れるのを忘れないようにしてください。
<uses-permission androidname="android.permission.INTERNET" />
以上、参考になれば幸いです。
それでは。
書いた人:イノベーションオフィス 室長 吉田