package com.dteviot.epubviewer; import android.annotation.TargetApi; import android.content.Context; import android.net.Uri; import android.os.Build; import android.util.AttributeSet; import android.webkit.WebResourceResponse; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; /* * EpubWebView for use with Android 3.0 and above * The class uses shouldInterceptRequest() to load * resources that are referenced (i.e. Links) into the * view. */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class EpubWebView30 extends EpubWebView { public EpubWebView30(Context context) { super(context, null); } public EpubWebView30(Context context, AttributeSet attrs) { super(context, attrs); } /* * Do any Web settings specific to the derived class */ protected void addWebSettings(WebSettings settings) { settings.setDisplayZoomControls(false); } /* * @ return Android version appropriate WebViewClient */ @Override protected WebViewClient createWebViewClient() { return new WebViewClient() { @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { return onRequest(url); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); onPageLoaded(); } }; } protected void LoadUri(Uri uri) { loadUrl(uri.toString()); } /* * Called when Android 3.0 webview wants to load a URL. * @return the requested resource from the ebook */ private WebResourceResponse onRequest(String url) { Uri resourceUri = Uri.parse(url); WebResourceResponse webResponse = new WebResourceResponse("", "UTF-8", null); ResourceResponse response = getBook().fetch(resourceUri); // if don't have resource, give error if (response == null) { getWebViewClient().onReceivedError(this, WebViewClient.ERROR_FILE_NOT_FOUND, "Unable to find resource in epub", url); } else { webResponse.setData(response.getData()); webResponse.setMimeType(response.getMimeType()); } return webResponse; } }