use*_*415 5 android webview webviewclient
我有一个网站.在网站上,有一个文本"Pic".当我第一次在Webview中显示网站时,我可以将文本更改为"PicGreat".这有效!
但是,稍后当用户点击链接(网站上的某个位置)时,我会将用户转发到新的HTML网站.在我展示网站之前,我想将文本"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"
/>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 1
我会用WebViewClient.shouldInterceptRequest():
通知主机应用程序资源请求并允许应用程序返回数据。如果返回值为null,WebView将照常继续加载资源。否则,将使用返回响应和数据。
注意:此方法是在 UI 线程以外的线程上调用的,因此客户端在访问私有数据或视图系统时应小心谨慎。
| 归档时间: |
|
| 查看次数: |
2829 次 |
| 最近记录: |