web-dev-qa-db-fra.com

Android WebView cliquez sur ouvrir dans WebView pas un navigateur par défaut

J'ai utilisé un exemple d'application à l'aide de WebView. Dans cette vue Web, l'URL provient de services Web. Cela fonctionne bien, mais si je clique sur un lien de cette vue Web, son navigateur Web est automatiquement sélectionné. Mais je veux ouvrir uniquement dans la vue Web de mon application. Voici mon code:

WvBikeSite = (WebView) findViewById(R.id.wv_bikeWebsite);
wvBikeSite.loadUrl(getBundle.getString("www"));
28
selva

Vous devez configurer un WebViewClient pour votre WebView.

Échantillon:

this.mWebView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      view.loadUrl(url);
      return true;
    }
});
69
Terence Lui

Vous devez configurer un WebViewClient afin de remplacer ce comportement (ouverture de liens à l'aide du navigateur Web). De toute évidence, votre WebView est déclarée, mais vous configurez ensuite un WebViewClient comme suit:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());

Ensuite, vous devez définir votre WebViewClient ():

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // Designate Urls that you want to load in WebView still.
            return false;
        }

        // Otherwise, give the default behavior (open in browser)
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}

Puis démarrez votre WebViewClient:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());

http://developer.Android.com/guide/webapps/webview.html

10
Mark Lyons

Je rencontre le même problème et je viens de le réparer en ajoutant une seule ligne.

webview.setWebViewClient(new WebViewClient());

et cela a résolu mon problème.

5
Syed_Adeel

Vous devez appeler wvBikeSite.setWebViewClient, par exemple:

    MyWebViewClient wvc = new MyWebViewClient();
    wvBikeSite.setWebViewClient(wvc);

Où MyWebViewClient remplace devraitOverrideUrlLoading, à savoir:

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
2
Philip Sheard

Vous pouvez toujours ouvrir l'URL dans WebView en utilisant ceci:

      @Override
  public void onCreate(Bundle savedInstanceState) {
     webview.setWebViewClient(new MyWebViewClient());
 webview.getSettings().setJavaScriptEnabled(true);
 webview.getSettings().setPluginsEnabled(true);
     }


     private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {


            view.loadUrl(url);
            return true;
        }

        @Override
        public void onLoadResource(WebView  view, String  url){

        }
    }    
1
saba

J'ai fait comme ça et ça marche parfaitement ..

mWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url != null && url.startsWith("http://")) {
                mWebView.loadUrl(url);
                return true;
            } else {
                return false;
            }
        }
    });
1
Ali

Essayez celui-ci, cette méthode est obsolète.

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return super.shouldOverrideUrlLoading(view, request);
        }
1
Ashish Verma

Utilisez ce code: 

// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient());       
0
webview.setWebViewClient(new WebViewClient());
webview.loadUrl(url);

Définissez le client Webview.

0
Pranav V R

Voici mon code comment résoudre le problème ci-dessus (en cliquant sur le lien, il demande au navigateur par défaut d'ouvrir le lien)

import Android.os.Bundle;import Android.annotation.SuppressLint;import Android.app.Activity;
import Android.view.Menu;import Android.webkit.WebChromeClient;
import Android.webkit.WebView;public class MainActivity extends Activity{
`@SuppressLint("SetJavaScriptEnabled")@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String url="http://google.com";WebView Webview=(WebView) this.findViewById(R.id.webView1);     Webview.getSettings().setJavaScriptEnabled(true);Webview.loadUrl(url);}@Override    public boolean onCreateOptionsMenu(Menu menu){//Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);return true;}`}
0
Sharan

La plupart des réponses sont correctes, mais veuillez noter que: SupportMultipleWindows doit être défini sur false.

mWebView.getSettings().setSupportMultipleWindows(false);

et maintenant définir webViewClint et obtenir l'URL de chargement.

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){

    Log.d(TAG,"URL: "+url);
    view.loadUrl(url);

    /**
     * if you wanna open outside of app
     if (url != null && url.startsWith(URL)) {
     view.loadUrl(url);
     return false;
     }
     // Otherwise, give the default behavior (open in browser)
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     startActivity(intent);**/
    return true;

}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);
}

@Override
public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);

    }
});
0
Md Imran Choudhury

Cela ouvrira un lien particulier uniquement dans votre application ...

WebView web;

web = (WebView) findViewById(R.id.web);
web.setWebViewClient(new WebViewClient(){

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && url.startsWith("http://www.xplorerstrick.net")) {
            view.loadUrl(url);
            progDailog.show();
            return true;
        }
        else {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    }
}
0
Amrish Kakadiya