안드로이드 개발 질문/답변
(글 수 45,052)
Layout 안에 WebView를 넣어 embedded webview 예제를 작성 하였는데, 결과는 Intent(Intent.ACTION_VIEW, uri);
와 동일합니다. 내 애플리케이션의 뷰안에서 보여지는 것이 아니라 에뮬레이터 내장 브라우저가 런치되면서 해당 url
을 보여줍니다.
어디가 잘못된건지요.
버전에 상관없습니다.
아래는 사용한 layout xml과 code 입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/my_webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
package org.example.mywebview;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebView extends Activity {
WebView myWebView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myWebView = (WebView)findViewById(R.id.my_webview);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.google.com");
}
}
위와 같이 했을때 관련 예제나 문서 설명에는 내 애플리케이션안에 있는 webview에서 browsing이 된다고
하는데, 제가 실행하여 보니 안드로이드에 내장된 브라우저가 떠 버립니다.
setWebViewClient(); 를 추가하면 원하는 대로 되긴 하는데, 예제나 문서에는 이 함수 없이 위 코드만으로 된다고 하여
궁금해 질문 합니다.
공지 읽었습니다.
2010.03.26 17:51:13
먼저, 답변 감사드리고요, 후자에 가깝습니다. 가깝다고 말씀드린 이유는 로드된 페이지의 링크를 눌렀을 경우가 아니라(이 경우는 setWebViewClient(); 를 써야만 되네요.) 최초로 로드될 경우에도 내 webview가 아닌 시스템 브라우저가 뜨기에 그런 것입니다.
워낙에 간단한 코드라 테스트 해 볼것도 없었지만, :)
myWebView.loadUrl(
워낙에 간단한 코드라 테스트 해 볼것도 없었지만, :)
myWebView.loadUrl(
"http://www.google.com"); 대신에
myWebView.loadUrl("http://www.android.com") 을 넣었을 경우, 의도한 대로 되는 것으로 보아
구글사이트나 네이버 사이트등은 http://www.google.com이나 http://www.naver.com으로 접속했을 경우,
다른 링크를 열어서(주소창에는 변동 없이) 그런것 같습니다.



후자인 경우, 원래 WebView 자체가 링크를 클릭하면 시스템 브라우저를 띄우게 되어있습니다. 이 동작을 바꾸려면 setWebViewClient() 를 적당히 호출하면 됩니다.