|
webviewClient.java 에 shouldOverrideUrlLoading 이라는
function 이 있다.
이 함수는 페이지 이동시 등등에 항상 불린다..
좀 자세히 보자..
1. bool WebFrame::canHandleRequest(const
WebCore::ResourceRequest& request) {
jboolean ret =
env->CallBooleanMethod(mJavaFrame->frame(env).get(),
mJavaFrame->mHandleUrl, jUrlStr);
}
: webkit core
에서 호출함.
==>
2. public boolean handleUrl(String url)
{
if
(mCallbackProxy.shouldOverrideUrlLoading(url)) {
}
==>
3. public boolean
shouldOverrideUrlLoading(String url) {
Message msg =
obtainMessage(OVERRIDE_URL);
msg.getData().putString("url", url);
msg.obj = res;
synchronized (this) {
sendMessage(msg);
}
==>
4. handleMessage
case OVERRIDE_URL:
String overrideUrl =
msg.getData().getString("url");
boolean override =
uiOverrideUrlLoading(overrideUrl);
==>
5. public boolean uiOverrideUrlLoading(String overrideUrl) {
override =
mWebViewClient.shouldOverrideUrlLoading(mWebView,
overrideUrl);
}
==>
결국 browseractivity.java 의 shouldOverrideUrlLoading 이 호출된다..
return false 이면 google browser 가 처리하고 return true 이면 다른 app 가 처리한다..
'차근차근 > Android' 카테고리의 다른 글
Handler (0) | 2014.07.29 |
---|---|
[Android] WebView에서 HTML5 사용을 위한 WebSettings 설정 (0) | 2014.07.29 |
WebChromeClient 사용하기 (0) | 2014.07.29 |
안드로이드 웹뷰(webview)안에서 alert 처리 (0) | 2014.07.29 |
[AnDrOiD]WebChromeClient 에서 alert (0) | 2014.07.29 |