我有一个recyleView,显示客户账单列表,当点击账单我需要显示详细账单(账单网址 - 当浏览器上的URL下载为PDF时 - 需要进行身份验证)我使用下面的代码来下载PDF,我可以将PDF下载我的问题
a)如何在webView中显示此内容
b)有没有其他方法可以向用户显示此PDF而无需下载/写入外部导演
if(ContextCompat.checkSelfPermission(getActivity(),
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(mimeType);
//------------------------COOKIE!!------------------------
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
//------------------------COOKIE!!------------------------
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading file...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimeType));
DownloadManager dm = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getActivity().getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show();
}
});
}else{
if(shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
Toast.makeText(getActivity(),
"External storage permission required to save billing statements",
Toast.LENGTH_SHORT).show();
}
requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_EXTERNAL_STORAGE_RESULT);
}
答案 0 :(得分:1)
如何在webView中显示此内容
WebView
没有呈现PDF的本机功能。您可以使用Mozilla PDF.js
在WebView
中呈现PDF,但这仅适用于Android 4.4+,并且需要对PDF.js
本身进行一些小调整。
有没有其他方法可以向用户显示此PDF而无需下载/写入外部导演
您可以将其下载到内部存储空间(例如getFilesDir()
,getCacheDir()
),通过FileProvider
投放文件,并使用ACTION_VIEW
允许用户查看PDF使用他们喜欢的PDF查看器。
对于Android 5.0+上的有限PDF,Android SDK中有PdfRenderer
。 pdfium
可用于Android,但它相当大。有关PDF查看选项的更多信息,请参阅this blog post。
您还可以研究商业PDF渲染库。