web-dev-qa-db-fra.com

Android webview lance le navigateur lorsque vous appelez loadurl

J'ai créé un Activity qui a un titre et une vue Web dans un LinearLayout. Dans la méthode onResume(), il appelle webView.loadUrl(url). Le problème est que l'activité affiche d'abord le titre avec le reste de l'écran vide, puis le navigateur de périphérique est lancé avec la page de l'URL. Ce que je veux voir, c'est la page affichée dans la WebView sous le titre. Quel pourrait être le problème?

Edit : Ok, a effectué une recherche supplémentaire et a trouvé celui-ci:

Cliquer sur les URL ouvre le navigateur par défaut

Il pointe vers le tutoriel WebViewici .

Il suffit de mettre en œuvre le client Web et de le définir.

433
Ray

Répondant à ma question sur la base des suggestions de Maudicus et Hit.

Consultez le didacticiel WebView ici . Il suffit de mettre en œuvre le client Web et de le définir avant loadUrl . Le moyen le plus simple est:

myWebView.setWebViewClient(new WebViewClient());

Pour un traitement plus avancé du contenu Web, envisagez ChromeClient.

746
Ray

Utilisez ceci:

lWebView.setWebViewClient(new WebViewClient());
94
oops.objective

utiliser comme ceci:

@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");
}
49
Vinod Joshi

Faites votre activité comme ça.

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/");
   }
}
23
Abduhafiz

Je faisais face au même problème et j'ai trouvé la solution Documentation officielle d'Android sur WebView

Voici ma méthode onCreateView() et ici j'ai utilisé deux méthodes pour ouvrir les URL

La méthode 1 ouvre l'URL dans le navigateur et

La méthode 2 ouvre l'URL dans la vue Web de votre choix.
Et j'utilise la méthode 2 pour mon application et voici mon code:

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;
}                                                                                               }
18
Arsh Kaushal

Essayez ce code ...

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);
}
6
code_geek

Répondez simplement, vous pouvez utiliser comme ceci

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
user6434985

Utilisation

   mWebView.setWebViewClient(new WebViewClient());

Et le mWebView est l'objet de WebView

0
Bino Benny