안드로이드 개발 질문/답변
(글 수 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() 를 적당히 호출하면 됩니다.