안드로이드 웹뷰 에서는 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을 실행시켜주시면 됩니다!
'네이티브 > Android' 카테고리의 다른 글
Android webview에서 javascript로 함수 호출하기 ℡ (0) | 2022.04.20 |
---|---|
Android splash image 띄우기 (Renewal) (0) | 2022.03.01 |
Android 웹뷰 쿠키 native에서 세팅 (0) | 2022.01.21 |
Android 웹뷰 디버깅 (0) | 2022.01.20 |
안드로이드 UGC 심사 거절 (0) | 2022.01.18 |