I am building an Android App for my group in my locality. I want to implement a feature into the app. I'm using Web View to cache the webpage's text only although the webpage comes with an images. The images which comes with text should be displayed only when there is an internet connection.
Please show me a way to achieve this.
UPDATE
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();
}
NB: Please this is what I have done so far, this is able to cache all the web page content including the images, however i want to be able to cache only the texts that comes with the web page and display the images only when there is an internet connection.