2. 자바스크립트를 이용하는 방법(addJavascriptInterface)
예시로 특정버튼을 id 값으로 찾은 다음에 그 href 속성값을 얻는 과정이다.
//자바스크립트에서 쓰일 클래스
private class JsObject {
@JavascriptInterface
public void saveButtonLink(String link) {
//버튼 주소임
Log.d(TAG, "===: buttonLink > " + link);
}
}
//웹 클라이언트 클래스
private class CustomClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
//btn1 엘리먼트에서 href 값을 전달
webview.loadUrl("javascript:var element = document.getElementById('btn1');"
+ " var link = element.getAttribute('href');"
+ " injectedObject.saveButtonLink(link)");
super.onPageFinished(view, url);
}
}
//클라이언트 생성
CustomClient client = new CustomClient();
//웹뷰
webview = (WebView) view.findViewById(R.id.webview);
//자바스크립트 사용
webview.getSettings().setJavaScriptEnabled(true);
//클라이언트 설정
webview.setWebViewClient(client);
//자바스크립트 인터페이스 설정
webview.addJavascriptInterface(new JsObject(), "injectedObject");