네이티브/Android
Android 웹뷰 alert, confirm 띄우기
우보틀
2022. 1. 24. 01:48
안드로이드 웹뷰 에서는 alert 와 confirm을 따로 커스텀 하지 않아도 띄워주긴 합니다.
아래의 내용은 좀 더 입맛에 맞게 브라우저에서 alert와 confirm을 띄워줄 때 액션을 다루기 위한 내용 입니다.
WebView webview;
WebChromeClient webClient = new WebChromeClient() {
// 여기에서 메서드들을 override 해주면 됩니다
}
webview.setWebChromeClient(webClient);
은 WebChromeClient의 객체를 생성해주는 부분인데 이 클래스 안에 정말 많은 기능들이 숨어있습니다.
(제가 봤을때는 19개의 메소드가 있었고 alert, confirm, prompt, geolocation 승인 등등 다양한 내용이 있었습니다.)
이중에서 위의 주제에 적합한 두개의 메소드를 오버라이드 해줄겁니다.
alert
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("알림 메시지")
.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;
}
confirm
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("confirm Test")
.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() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
})
.create()
.show();
return true;
}
* 간편하게 테스트 하시고 싶으실때는 디버거 모드의 inspector에서 console창에 접근후 alert, confirm을 실행시켜주시면 됩니다!