Webview를 통해 하이브리드 앱을 만들때
setJavaScriptEnabled(true)를 설정해도 javascript의 alert 또는 confirm은 반응이 없다.
Webview 내에서 alert이나 confirm창을 띄우기 위해서는 별도로 구현을 해줘야 한다.
private WebView mWebView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.activity_trandent_webview);WebSettings set = mWebView.getSettings();
set.setJavaScriptEnabled(true);
final Context myApp = this;
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
{
new AlertDialog.Builder(myApp).setTitle("Alert").setMessage(message)
.setPositiveButton(android.R.string.ok,new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
});
}
기본적으로 setJavaScriptEnabled(true)를 통해 javascript 사용설정이 되어 있어야 하고
setWebChromeClient에 위의 @Override 내용을 추가 해 준다.
결과 -