WebView de Android haga clic en abrir en WebView no en un navegador predeterminado

Hice una aplicación de ejemplo usando WebView, en esa vista web la URL viene de servicios web. Está funcionando bien, pero si hago clic en cualquier enlace dentro de ese WebView, su automáticamente ir para el navegador web predeterminado. Pero quiero abrir solo en la vista web de mi aplicación. Aquí mi código:

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

Tienes que configurar un webViewClient para tu webView.

Muestra:

 this.mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ view.loadUrl(url); return true; } }); 

Debe configurar un WebViewClient para anular ese comportamiento (abrir vínculos mediante el navegador web). Obviamente tienes tu WebView declarado, pero luego configuramos un WebViewClient de la siguiente manera:

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

Entonces usted necesita definir su 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; } } 

A continuación, inicie su WebViewClient:

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

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

Tengo el mismo problema y lo soluciono simplemente añadiendo una sola línea.

 webview.setWebViewClient(new WebViewClient()); 

Y esto resolvió mi problema.

Necesita llamar a wvBikeSite.setWebViewClient, por ejemplo:

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

Donde MyWebViewClient anula shouldOverrideUrlLoading, a saber:

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

Siempre puede abrir url dentro de webview mediante el uso de este:

  @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){ } } 

Me gustó esto y su trabajo perfecto ..

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

Intente esto, ese método está obsoleto.

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

Aquí está mi código cómo resolver el problema antedicho (cuando cliking en el acoplamiento que pide el browser del defecto para opn el acoplamiento)

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

Esto abrirá cualquier enlace en particular en su aplicación …

 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; } } } 
 webview.setWebViewClient(new WebViewClient()); webview.loadUrl(url); 

Definir cliente de webview.

  • El bloqueo del sistema al reemplazar shouldInterceptRequest en WebViewClient
  • La función de visualización de android enPagefinished se llama dos veces
  • No se puede obtener la viewWidth después del primer diseño (WebView en un ViewPager)
  • Cargar todos los fragmentos en la apertura de la aplicación
  • Se rehusó a mostrar un marco porque establecía X-Frame-Options en 'DENY en android webview
  • Las imágenes no se cargan en la vista web de android
  • Cargar imagen desde un directorio privado local en una vista web
  • PictureListener y onNewPicture () están obsoletos - Alternativas?
  • ¿Cómo crear una aplicación Android completa para un sitio web?
  • Las funcionalidades de JQuery no funcionan cuando carga los datos html de una cadena en webview
  • WebView shouldOverrideUrlLoading () no se invocan enlaces no válidos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.