loadurl을 호출하면 Android 웹보기가 브라우저를 시작합니다.


473

Activity에 제목과 웹보기가있는를 만들었습니다 LinearLayout. 이 onResume()방법에서는을 호출합니다 webView.loadUrl(url). 문제는 활동이 먼저 나머지 화면을 비운 상태로 제목을 표시 한 다음 장치 브라우저가 URL 페이지와 함께 시작된다는 것입니다. 내가보고 싶은 WebView것은 제목 아래 에 표시되는 페이지 입니다. 무엇이 문제 일 수 있습니까?

편집 : 좋아, 추가 검색을 하고이 것을 찾았습니다.

URL을 클릭하면 기본 브라우저가 열립니다

여기 에서 WebView튜토리얼을 가리 킵니다 .

웹 클라이언트를 구현하고 설정하십시오.


당신이 내 문제를 해결했기 때문에 이것을 언급합니다 ... 감사합니다.
Jesse Black

2
@Ray, 해결책을 찾은 경우이 질문에 대한 답변을 작성하고 수락하십시오. 이것은 같은 문제를 가진 다른 사람들을 도울 것입니다.
HitOdessit

1
나는 더 고상한 문제가 있었다. 사용자 정의 WebViewClient를 사용하지 않으면 브라우저 로 리디렉션 조차 로드됩니다.
Jakob Weisblat 2016 년


이것은 또한 ...에 대해 알려줍니다 youtube.com/watch?v=4bIF5In1c8s
Athira 레디에게

답변:


799

Maudicus와 Hit의 제안에 따라 내 질문에 대답하십시오.

여기서 WebView 튜토리얼을 확인 하십시오 . 웹 클라이언트를 구현하고 loadUrl 전에 설정하십시오 . 가장 간단한 방법은 다음과 같습니다.

myWebView.setWebViewClient(new WebViewClient());

웹 컨텐츠에 대한 고급 처리를 위해 ChromeClient를 고려하십시오.


3
초기 페이지를 열 때 WebView가 기본 브라우저를 시작하지 않도록합니다.
Magno C

23
이 믿을 수 없을만큼 멋진 요술에 감사드립니다! +1 ... 안드로이드 하나 당신을 위해, 안드로이드 ...
Josh

훌륭한 답변입니다. 내 문제도 해결했다.
Omid1989

초기로드에서만 작동합니까? 앱 내에서 브라우저를 탐색하려면 어떻게합니까?
logicbloke

5
myWebView.webViewClient = WebViewClient()코 틀린에서!
Thomas Pritchard


52

이처럼 사용하십시오 :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dedline);

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.loadUrl("https://google.com");
}

25

당신의 활동을 이렇게 만드십시오.

public class MainActivity extends Activity {
WebView browser;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // find the WebView by name in the main.xml of step 2
    browser=(WebView)findViewById(R.id.wvwMain);

    // Enable javascript
    browser.getSettings().setJavaScriptEnabled(true);  

    // Set WebView client
    browser.setWebChromeClient(new WebChromeClient());

    browser.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
                }
        });
     // Load the webpage
    browser.loadUrl("http://google.com/");
   }
}

1
setJavaScriptEnabled(true)XSS 취약점을 앱에 도입합니다. JavaScript가 필요 없으면 사용하지 마십시오
apex39

JavaScript를 활성화하는 라인은 매우 중요합니다. 그렇지 않으면 You need to enable JavaScript to run this app.인터넷 검색에 문제가있는 사람들 만 공개하고 브라우저 설정에서 JavaScript가 이미 활성화되어 있기 때문에 열광 할 것입니다.
Jordan H

19

나는 같은 문제에 직면하고 WebView에 대한 Android 공식 문서 솔루션을 찾았습니다.

여기 내 onCreateView()방법이 있고 여기에 URL을 여는 두 가지 방법을 사용했습니다.

방법 1 은 브라우저에서 URL을 열고

방법 2 는 원하는 WebView에서 URL을 엽니 다 .
그리고 내 응용 프로그램에 방법 2를 사용하고 있으며 이것은 내 코드입니다.

public class MainActivity extends Activity {
   private WebView myWebView;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);

      // Show the dummy content as text in a TextView.
      if (mItem != null) {

         /* Method : 1
          This following line is working fine BUT when we click the menu item then it opens the URL in BROWSER not in WebView */
         //((WebView)   rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url);

        // Method : 2
        myWebView = (WebView) rootView.findViewById(R.id.detail_area); // get your WebView form your xml file
        myWebView.setWebViewClient(new WebViewClient()); // set the WebViewClient
        myWebView.loadUrl(mItem.url); // Load your desired url
    }

    return rootView;
}                                                                                               }

6

간단히 대답하면 다음과 같이 사용할 수 있습니다

public class MainActivity extends AppCompatActivity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         WebView webView = new WebView(this);
         setContentView(webView);
         webView.setWebViewClient(new WebViewClient());
         webView.loadUrl("http://www.google.com");
   }
}

6

이 코드를 사용해보십시오 ...

private void startWebView(String url) {

    //Create new webview Client to show progress dialog
    //When opening a url or click on link

    webView.setWebViewClient(new WebViewClient() {      
        ProgressDialog progressDialog;

        //If you will not use this method url links are opeen in new brower not in webview
        public boolean shouldOverrideUrlLoading(WebView view, String url) {              
            view.loadUrl(url);
            return true;
        }

        //Show loader on url load
        public void onLoadResource (final WebView view, String url) {
            if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(view.getContext());
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
        }
        public void onPageFinished(WebView view, String url) {
            try{
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
                progressDialog = null;
            }
            }catch(Exception exception){
                exception.printStackTrace();
            }
        }

    }); 

     // Javascript inabled on webview  
    webView.getSettings().setJavaScriptEnabled(true); 

    // Other webview options
    /*
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    */

    /*
     String summary = "<html><body>You scored <b>192</b> points.</body></html>";
     webview.loadData(summary, "text/html", null); 
     */

    //Load url in webview
    webView.loadUrl(url);
}

1

당신이 볼 경우 빈 페이지를 자바 스크립트를 사용하도록 설정합니다.

webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.