-
-
Save arvind-india/8fd08cbbdae2b1d0f94265284b6a2ea9 to your computer and use it in GitHub Desktop.
Android - Example for handling redirect urls and open PDF without download, in webview.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void init() | |
{ | |
WebView webview = (WebView) findViewById(R.id.webview); | |
WebSettings settings = webview.getSettings(); | |
settings.setJavaScriptEnabled(true); | |
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); | |
PdfWebViewClient pdfWebViewClient = new PdfWebViewClient(this, webview); | |
pdfWebViewClient.loadPdfUrl( | |
"https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjgwIfp3KXSAhXrhFQKHQqEDHYQFggZMAA&url=http%3A%2F%2Fwww.orimi.com%2Fpdf-test.pdf&usg=AFQjCNERYYcSfMLS5ukBcT2Qy11YxEhXqw&cad=rja"); | |
} | |
private class PdfWebViewClient extends WebViewClient | |
{ | |
private static final String TAG = "PdfWebViewClient"; | |
private static final String PDF_EXTENSION = ".pdf"; | |
private static final String PDF_VIEWER_URL = "http://docs.google.com/gview?embedded=true&url="; | |
private Context mContext; | |
private WebView mWebView; | |
private ProgressDialog mProgressDialog; | |
private boolean isLoadingPdfUrl; | |
public PdfWebViewClient(Context context, WebView webView) | |
{ | |
mContext = context; | |
mWebView = webView; | |
mWebView.setWebViewClient(this); | |
} | |
public void loadPdfUrl(String url) | |
{ | |
mWebView.stopLoading(); | |
if (!TextUtils.isEmpty(url)) | |
{ | |
isLoadingPdfUrl = isPdfUrl(url); | |
if (isLoadingPdfUrl) | |
{ | |
mWebView.clearHistory(); | |
} | |
showProgressDialog(); | |
} | |
mWebView.loadUrl(url); | |
} | |
@SuppressWarnings("deprecation") | |
@Override | |
public boolean shouldOverrideUrlLoading(WebView webView, String url) | |
{ | |
return shouldOverrideUrlLoading(url); | |
} | |
@SuppressWarnings("deprecation") | |
@Override | |
public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) | |
{ | |
handleError(errorCode, description.toString(), failingUrl); | |
} | |
@TargetApi(Build.VERSION_CODES.N) | |
@Override | |
public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request) | |
{ | |
final Uri uri = request.getUrl(); | |
return shouldOverrideUrlLoading(webView, uri.toString()); | |
} | |
@TargetApi(Build.VERSION_CODES.N) | |
@Override | |
public void onReceivedError(final WebView webView, final WebResourceRequest request, final WebResourceError error) | |
{ | |
final Uri uri = request.getUrl(); | |
handleError(error.getErrorCode(), error.getDescription().toString(), uri.toString()); | |
} | |
@Override | |
public void onPageFinished(final WebView view, final String url) | |
{ | |
Log.i(TAG, "Finished loading. URL : " + url); | |
dismissProgressDialog(); | |
} | |
private boolean shouldOverrideUrlLoading(final String url) | |
{ | |
Log.i(TAG, "shouldOverrideUrlLoading() URL : " + url); | |
if (!isLoadingPdfUrl && isPdfUrl(url)) | |
{ | |
mWebView.stopLoading(); | |
final String pdfUrl = PDF_VIEWER_URL + url; | |
new Handler().postDelayed(new Runnable() | |
{ | |
@Override | |
public void run() | |
{ | |
loadPdfUrl(pdfUrl); | |
} | |
}, 300); | |
return true; | |
} | |
return false; // Load url in the webView itself | |
} | |
private void handleError(final int errorCode, final String description, final String failingUrl) | |
{ | |
Log.e(TAG, "Error : " + errorCode + ", " + description + " URL : " + failingUrl); | |
} | |
private void showProgressDialog() | |
{ | |
dismissProgressDialog(); | |
mProgressDialog = ProgressDialog.show(mContext, "", "Loading..."); | |
} | |
private void dismissProgressDialog() | |
{ | |
if (mProgressDialog != null && mProgressDialog.isShowing()) | |
{ | |
mProgressDialog.dismiss(); | |
mProgressDialog = null; | |
} | |
} | |
private boolean isPdfUrl(String url) | |
{ | |
if (!TextUtils.isEmpty(url)) | |
{ | |
url = url.trim(); | |
int lastIndex = url.toLowerCase().lastIndexOf(PDF_EXTENSION); | |
if (lastIndex != -1) | |
{ | |
return url.substring(lastIndex).equalsIgnoreCase(PDF_EXTENSION); | |
} | |
} | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment