상세 컨텐츠

본문 제목

[webview] 사용자가 웹뷰에서 클릭한 정보 얻어오기

프로그램개발/안드로이드

by fsteam 2014. 9. 14. 02:33

본문

웹뷰를 이용해서 하이브리드 앱을 개발하는 경우가 많다.

일반적으로 네이티브앱과 자바스크립트를 통해서 웹프로그램과 통신하는 방법은 많이 알려져 있으나..

웹뷰에서 사용자가 어떤 액션을 취했는지를 알기는 쉽지 않다.

(내가 만든 웹프로그램에서는 별도의 자바스크립트를 만들어서 네이티브앱에 알려줄수 있으나..

타 사이트를 이용하는 경우 알수 있는 방법이 없다.)


웹뷰의 getHitTestResult() 를 이용해서.. 사용자의 클릭이벤트와 URL 정보등을 얻어올수 있다.


아래와 같은 정보를 얻어올 수 있다.

int ANCHOR_TYPE HitTestResult for hitting a HTML::a tag

int EDIT_TEXT_TYPE HitTestResult for hitting an edit text area

int EMAIL_TYPE HitTestResult for hitting an email address

int GEO_TYPE HitTestResult for hitting a map address

int IMAGE_ANCHOR_TYPE HitTestResult for hitting a HTML::a tag which contains HTML::img

int IMAGE_TYPE HitTestResult for hitting an HTML::img tag

int PHONE_TYPE HitTestResult for hitting a phone number

int SRC_ANCHOR_TYPE HitTestResult for hitting a HTML::a tag with src=http

int SRC_IMAGE_ANCHOR_TYPE HitTestResult for hitting a HTML::a tag with src=http + HTML::img

int UNKNOWN_TYPE Default HitTestResult, where the target is unknown


간단한 예제는 다음과 같다.

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

wv = (WebView) findViewById(R.id.MyWebView);

wv.getSettings().setJavaScriptEnabled(true);

wv.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

WebView.HitTestResult hr = ((WebView)v).getHitTestResult();

Log.i(TAG, "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType());

return false;

}

});

}



출처 : http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html

관련글 더보기