528 votes

La webview Android lance le navigateur lors de l'appel à loadurl

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

Editar : Ok, j'ai fait quelques recherches supplémentaires et j'ai trouvé celui-ci :

Cliquer sur les URL ouvre le navigateur par défaut

Il pointe vers le WebView tutoriel ici .

Il suffit d'implémenter le client web et de le paramétrer.

0 votes

Je mentionne ceci parce que vous avez résolu mon problème... Je vous remercie.

2 votes

@Ray, pensez à écrire une réponse à cette question, si vous avez trouvé une solution, et acceptez-la. Cela aidera d'autres personnes ayant le même problème.

1 votes

J'avais un problème encore plus grave. Il s'avère que même un réorienter se chargera avec le navigateur si un WebViewClient personnalisé n'est pas utilisé.

889voto

Ray Points 1539

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

Consultez le tutoriel WebView ici . Il suffit d'implémenter le client web et de le paramétrer avant loadUrl . La méthode la plus simple est la suivante :

myWebView.setWebViewClient(new WebViewClient());

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

3 votes

Pour éviter que WebView ne lance le navigateur par défaut lors de l'ouverture de la page initiale.

32 votes

Merci pour cet incroyable petit morceau de sorcellerie ! +1 ...MINUS ONE FOR YOU, Android...

0 votes

Excellente réponse. Elle a également résolu mon problème.

107voto

oops.objective Points 556

Utilisez ceci :

lWebView.setWebViewClient(new WebViewClient());

0 votes

@DigvijaySingh vérifiez l'original de la réponse acceptée. A l'origine, il n'y avait pas ce code. Il a été ajouté bien après cette réponse

58voto

Vinod Joshi Points 294

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

29voto

Mr. Abdu Jan Points 76

Réalisez votre activité comme suit.

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

8voto

code_geek Points 10

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X