Tengo un sitio web. En el sitio web, hay un texto "Pic". Cuando muestro el sitio web en la vista web por primera vez, puedo cambiar el texto a "PicGreat". ¡Esto funciona!Webview: ¿cambiar el origen de la página antes de mostrar el sitio web?
Pero, más adelante, cuando un usuario hace clic en un enlace (en algún lugar del sitio web), reenvía al usuario al nuevo sitio web HTML. Antes de mostrar el sitio web, quiero cambiar el texto "Pic" a "PicGreat".
¿Cómo puedo hacer eso? ¿Debo escribir una función y luego llamar a la función en "public boolean shouldOverrideUrlLoading"?
He encontrado una pregunta similar aquí en Stackoverflow, pero no se ha resuelto. how to set webview client
main.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
WebTest.java
public class WebTestActivity extends Activity {
WebView mWebView;
String rline = "";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
HttpURLConnection urlConnection = null;
try
{
URL url = new URL("http://www.picSite.com/");
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader rd = new BufferedReader(new InputStreamReader(in), 4096);
String line;
while ((line = rd.readLine()) != null) {
rline += line+"\n";
}
rd.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != urlConnection)
{
urlConnection.disconnect();
}
}
String getNewCode = rline.replace("Pic", "PicGreat");
mWebView.loadData(getNewCode, "text/html", "utf-8");
mWebView.setWebViewClient(new HelloWebViewClient());
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
Para el javadoc de shouldInterceptRequest, dice que devuelve A WebResourceResponse que contiene la información de respuesta o nulo si el WebView debe cargar el recurso en sí. No veo cómo se relacionó con la reescritura del html. – kevin
@kevin Puede cargar la página usted mismo, reescribir su fuente y devolverla como 'WebResourceResponse'. – user11153