5

私はウェブサイトを持っています。ウェブサイトには、「Pic」というテキストがあります。Webview で初めて Web サイトを表示するときに、テキストを「PicGreat」に変更できます。これはうまくいきます!

しかし、後でユーザーがリンク (Web サイトのどこか) をクリックすると、ユーザーを新しい HTML Web サイトに転送します。ウェブサイトを表示する前に、「Pic」というテキストを「PicGreat」に変更したいと思います。

どうすればそれを作ることができますか?関数を作成してから、「public boolean shouldOverrideUrlLoading」で関数を呼び出す必要がありますか?

ここ Stackoverflow で同様の質問を見つけましたが、解決されていません。 WebView クライアントの設定方法

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

 }
}
4

1 に答える 1

1

私は使用しますWebViewClient.shouldInterceptRequest()

ホスト アプリケーションにリソース要求を通知し、アプリケーションがデータを返せるようにします。戻り値が null の場合、WebView は通常どおりリソースの読み込みを続行します。それ以外の場合は、返された応答とデータが使用されます。

注: このメソッドは UI スレッド以外のスレッドで呼び出されるため、クライアントはプライベート データまたはビュー システムにアクセスするときに注意する必要があります。

于 2013-05-28T06:16:03.007 に答える