'alert()'에 해당되는 글 1건

  1. 2014.07.25 WebView에서 반응 없는 Alert 대화상자 표시
Android 안드로이드2014. 7. 25. 09:23


안드로이드 웹뷰에서 alert()를 두고 터치하면 반응이 없다.

웹뷰에서 자바스크립트 사용한다는 아래 한 줄로 경고창이 뜨지 않는다.

mWebView.getSettings().setJavaScriptEnabled(true);

웹뷰는 이를 지원하지않는 것이다. 해답은 직접 구현하는 것으로!



mWebView.setWebChromeClient(new WebChromeClient());

를 넣어주거나 아래 코드와 같이 WebChromeClient 클레스를 상속해서 내용을 구현해 줄 필요가있다. 그 내용은 당연히 경고창 모양을 가지는 대화상자가 되어야 한다.



void initWebView() {
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient_sub());
mWebView.setWebChromeClient(new WebChromeClient_sub());


/** window.AndroidInterface.onPageOpen("www.google.com"); // Call onPageOpen() function from javascript */

mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
String url = "file:///android_asset/index.html";
mWebView.loadUrl(url);
}

private class WebViewClient_sub extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}


public class WebChromeClient_sub extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) {
// new AlertDialog.Builder(mContext)
//// .setTitle("Alert title")
// .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;
return super.onJsAlert(view, url, message, result);
}
}

위에서 return super.onJsAlert(view, url, message, result);를 주석처리하고 주석부분을 풀면 커스터마이징된 경고창으로 탈바꿈된다.



index.html파일은 아래와 같다.

<html>
<head>
<title>WebView Test</title>
</head>
<body>
<h1>WebView Test</h1>
<a href="javascript:alert('Test');">Alert Test</a><br/>

<a href="javascript:alert2('Test2');">Alert2 Test2</a><br /><br />

</body>
</html>

위 html파일은 안드로이드 스튜디오 해당 프로젝트 assets폴더에 둔다.

Posted by 코드버무려