我正在尝试使用webview呈现PDF链接。我试图呈现的链接由我的应用程序上传到firebase数据库。
虽然链接在iOS设备上成功呈现。它不在Android上。
我非常推测所有这些混乱背后的原因是火力链接。
如果我尝试从网络上呈现正常的pdf链接。
String pdf_sample = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
String googleDocs = "https://docs.google.com/viewer?url=";
Webviewz.getSettings().setJavaScriptEnabled(true);
Webviewz.loadUrl(googleDocs + pdf_sample);
导致成功的PDF渲染
如果我依赖并尝试在我的Firebase数据库中显示和呈现PDF链接,我会通过谷歌文档获得这个空白的深灰色背景,并且没有预览可用
的标志 String Firebase_link_failure = "https://firebasestorage.googleapis.com/v0/b/jouska-aabee.appspot.com/o/PDF_files%2F305?alt=media&token=b9cf2fa6-f6ff-4a3b-8908-9eac294c4668";
String googleDocs = "https://docs.google.com/viewer?url=";
Webviewz.getSettings().setJavaScriptEnabled(true);
Webviewz.loadUrl(googleDocs + Firebase_link_failure);
导致无法预览
用户 sphippen 建议的解决方案已经解决。使用firebase链接上的UrlEncoder,成功呈现了pdf。以下是单一修改。
Webviewz.loadUrl(googleDocs+ URLEncoder.encode(firebase_link, "utf-8"));
答案 0 :(得分:3)
看起来问题是您只是附加两个字符串来形成您的网址:
Webviewz.loadUrl(googleDocs + pdf_sample);
查看完整的网址(使用代码示例中的值):
&
后的alt=media
字符结束了url
参数,因此该网页尝试访问的网址只有https://firebasestorage.googleapis.com/v0/b/jouska-aabee.appspot.com/o/PDF_files%2F8828?alt=media,其中不包含下载内容令牌。
您需要转义Firebase存储下载链接以用作网址参数(将&
替换为%26
,?
替换为{ {1}},%3F
与%
等)。 URLEncoder类应该有效:
%25