웹뷰를 이용해서 하이브리드 앱을 개발하는 경우가 많다.
일반적으로 네이티브앱과 자바스크립트를 통해서 웹프로그램과 통신하는 방법은 많이 알려져 있으나..
웹뷰에서 사용자가 어떤 액션을 취했는지를 알기는 쉽지 않다.
(내가 만든 웹프로그램에서는 별도의 자바스크립트를 만들어서 네이티브앱에 알려줄수 있으나..
타 사이트를 이용하는 경우 알수 있는 방법이 없다.)
웹뷰의 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
[TIP] 안드로이드 앱 종료되는 현상 (0) | 2015.02.03 |
---|---|
액션바 스타일 쉽게 변경하기 (0) | 2014.10.06 |
GCM(푸쉬) 전송 후 결과 메시지 분석하기 (0) | 2014.05.08 |
[TIP] ImageView 의 setImageURI 에서 OOM(OutOfMemory) 에러발생시. (0) | 2013.07.10 |
이용내역 모니터링 (0) | 2013.06.07 |