我正在为我所在地区的小组构建一个Android应用程序。我想在应用程序中实现一个功能。虽然网页附带图片,但我只使用网页浏览来缓存网页的文字。只有在有互联网连接的情况下,才会显示带有文字的图像。
请告诉我实现这一目标的方法。
更新
WebView web;
ProgressBar progressBar;
final Activity activity = this;
TextView textview;
final String url="http://mywebpages.com";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.executives_layout);
web = (WebView) findViewById(R.id.webView01);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
textview = (TextView) findViewById(R.id.progressText);
web.setWebViewClient(new myWebClient());
web.getSettings().setSupportZoom(true);
web.getSettings().setBuiltInZoomControls(true);
web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
web.setScrollbarFadingEnabled(true);
web.getSettings().setLoadsImagesAutomatically(true);
if(isNetworkAvailable()){
web.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
web.getSettings().setJavaScriptEnabled(false);
web.loadUrl(url);
}
else{
web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
web.loadUrl(url);
Toast.makeText(activity, "" + "Network Access Error: Check Network Connections", Toast.LENGTH_LONG)
.show();
}
}
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
textview.setVisibility(View.GONE);
}
public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
String myHtmlString="<center><p>Oooops!</p>"
+ "<p> Sorry,network settings<br/>"
+ "is lost.</p></center>";
view.loadData(header+myHtmlString, "text/html", "UTF-8");
}
}
// To handle "Back" key press event for WebView to go back to previous screen.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
web.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
注意:请这是我到目前为止所做的,这是能够缓存包括图像在内的所有网页内容,但我希望能够只缓存网页附带的文本并显示图像只有在有互联网连接的时候。
答案 0 :(得分:1)
使用BroadcastReceiver获取互联网连接的信息。请参阅 Detect whether there is an Internet connection available on Android
修改强>
你好,所以,你需要一个算法来实现你的目标。
刚才我想到的一种方法是,当没有互联网连接时,只需解析你的html(?!)中的“img”标签或你的字符串是什么(或者图像标签是什么,为你的串)。
另一方面,当您有互联网连接时,只需显示整个HTML代码。
请参阅此链接获取html版本:
答案 1 :(得分:0)
为了监听连接更改,您应该听取ConnectivityManager的意图,然后做出相应的响应。您还可以在ConnectivityManager中使用一些补充API,以便检测您是否也连接到任何内容。
http://developer.android.com/reference/android/net/ConnectivityManager.html