본문 바로가기

IT개발일지/Android

[Android] WebView 버튼 클릭 이벤트 javascript 연동

* 안드로이드 어플리케이션 제작중 하이브리드 앱 또는 반응형 웹페이지와 연동을 해야할경우가 있다.

또한 WebView에 표시해야할 페이지가 단일 페이지로 제작된 웹일 경우 페이지 이동에 제약을 따른다.

안드로이드로 비유하자면 ViewPager 안의 탭으로 바로 연결하는 함수라고 생각하시면 됩니다.

 

1. 기본 설정

binding.webview.setWebViewClient(new WebViewClientClass());
binding.webview.getSettings().setJavaScriptEnabled(true);
binding.webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
binding.webview.getSettings().setDomStorageEnabled(true);

private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d(TAG,"호출 URL : "+url);

if( URLUtil.isNetworkUrl(url) ) {
Log.d(TAG,"호출 url false");
return false;
}


return true;
}

@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError er) {
//handler.proceed();


}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("Page Finish URL",url);
//view.loadUrl(url);
Log.d(TAG,"접속");

for (int i = 10;i<20;i++){
binding.webview.loadUrl("javascript:(function() { " + "document.getElementById('hd_pops_"+i+"').style.display='none';})()");

//다이얼로그 클릭처리
}


final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("tag", "5초 후 실행");


binding.webview.loadUrl("javascript:document.getElementsByClassName('bt_gray3 st_pad5 bt_333')[1].click()")

//클래스 클릭처리
}
}, 3000);


}
}

}

※파트너스 활동을 통해 일정액의 수수료를  제공받을 수 있음※