Tôi có một trang web. Trên trang web, có một văn bản "Pic". Khi tôi hiển thị trang web trong Webview lần đầu tiên tôi có thể thay đổi văn bản thành "PicGreat". Những công việc này!Chế độ xem web - thay đổi nguồn trang trước khi hiển thị trang web?
Tuy nhiên, sau này khi người dùng nhấp vào Liên kết (một nơi nào đó trên trang web), thì tôi chuyển tiếp người dùng đến trang web HTML mới. Trước khi tôi hiển thị trang web, tôi muốn thay đổi chữ "Pic" thành "PicGreat".
Tôi làm cách nào để thực hiện điều đó? Tôi có nên viết một hàm và sau đó gọi hàm trong "công khai boolean shouldOverrideUrlLoading"?
Tôi đã tìm thấy câu hỏi tương tự ở đây trên Stackoverflow, nhưng chưa được giải quyết. 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;
}
}
}
fro javadoc của shouldInterceptRequest, nó nói nó trả về một WebResourceResponse chứa thông tin phản hồi hoặc null nếu WebView sẽ tải tài nguyên. Tôi không thấy nó liên quan đến việc viết lại html như thế nào. – kevin
@kevin Bạn có thể tải trang của mình, viết lại nguồn của nó và trả về nó dưới dạng 'WebResourceResponse'. – user11153