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"));
- WebView causando TypeError no capturado al cargar www.google.com
- Android, agente de usuario de webview vs agente de usuario de navegador
- Abrir el archivo adjunto en WebView
- Construcción de WebView personalizado con Cordova 5.0 en Android
- El menú desplegable de visualización web de Android no funciona en dispositivos Android 4.x
- Android dialogFragment "a veces" no muestra la vista web
- Android: evitar la recarga de WebView en rotación
- Metaetiqueta de Viewport ignorada en Android 4.4 WebView
- ¿Por qué no funciona pinch-to-zoom en mi WebView de Android?
- ¿Cómo obtenerContentHeight cuando se utiliza loadData?
- WebView consumiendo demasiada memoria
- El video de Android no se reanuda en la vista web
- Iniciar aplicación personalizada de Android desde WebView
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());
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.
- Cómo obtener el número actual de la tarjeta SIM en Android?
- Perdí mi keystore para la aplicación subida en el mercado de android