Created
February 24, 2017 06:44
-
-
Save ashishdas09/014a408f9f37504eb2608d98abf49500 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 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; | |
} | |
} |
URL loading is finished but not opening anything can you help me, thx!
Its not working on android version 7.1.1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Added example code for handling redirect urls and open PDF without download, in webview.