Ya. Debe implementar WebViewClient
clase y Override
shouldOverrideURLLoading()
método en esta clase.
¿Por qué? Debido a que webview
acaba de abrir su "enlace exactamente", si ese enlace redirige a otros enlaces, Android abrirá el navegador predeterminado para esta acción.
En su ejemplo, como usted sabe, cuando se conecta a google.com
google se redirige a google en su país. Ejemplo, si se encuentra en China, google irá al google.com.cn
, si está en Vietnam, será google.com.vn
.
Aquí está mi ejemplo sencillo: (se puede imaginar esto es un navegador nuevo,: risas)
En primer lugar es el archivo de diseño xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<EditText
android:id="@+id/url"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:hint="Input URL"/>
<Button
android:id="@+id/run"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:text="GO"/>
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
</LinearLayout>
Aquí es el código de la actividad principal:
package com.basic;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class WebViewExample extends Activity{
WebView webView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webview);
Button button = (Button) findViewById (R.id.run);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
gotoPage();
}
});
}
private void gotoPage(){
EditText text = (EditText) findViewById(R.id.url);
String url = text.getText().toString();
WebSettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);
webView.setWebViewClient(new Callback()); //HERE IS THE MAIN CHANGE
webView.loadUrl(url);
}
private class Callback extends WebViewClient{ //HERE IS THE MAIN CHANGE.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return (false);
}
}
}
esperanza esta ayuda ti :)
gracias por ur reply..but mi problema sigue siendo el mismo. tan pronto como cargue la URL a la vista web, se necesita pantalla completa como si se abriera una nueva actividad o navegador sobre la aplicación. al hacer clic en el botón Atrás, me lleva a la aplicación donde puedo ver 2 botones y vista web que está en blanco y en blanco. – WISH
puede compartir el código en la actividad principal de su sitio web ... solo las partes relevantes. Además, el código que lanza la url. – rajath
xml es lo mismo que respondió. mi código de Java es: public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main); browser = (WebView) findViewById (R.id.webView); browser.loadUrl ("http://www.google.com"); \t browser.getSettings(). SetJavaScriptEnabled (true); showPrevious = (Button) findViewById (R.id.showPrevious); showNext = (Button) findViewById (R.id.showNext); }); } – WISH