GeckoView新版本自动显示PDF而非下载,如何设置仅下载不显示?
解决GeckoView新版本PDF自动显示而非下载的问题
新版本GeckoView(85+)默认启用了内置的PDF.js查看器,这就是导致PDF直接在标签页打开而不触发下载的原因,你可以通过以下几种方式配置解决:
禁用内置PDF查看器
直接在GeckoSession的设置里关闭PDF.js功能,点击PDF链接时就会回到原来的下载触发逻辑:session.getSettings().setBoolean("pdfjs.disabled", true);这是最直接的解决方案,优先尝试这个。
接管下载回调
如果禁用PDF.js后仍有问题,可以通过设置GeckoSession的Delegate拦截下载请求,复用你之前的BroadcastReceiver下载逻辑:session.setDelegate(new GeckoSession.Delegate() { @Override public void onDownload(GeckoSession session, Download download) { // 这里调用你原来的BroadcastReceiver处理下载,或者直接启动下载 download.start(); } });提前拦截PDF请求
要是遇到服务器返回的MIME类型不标准的情况,可以通过ContentDelegate提前拦截请求,强制触发下载:session.setContentDelegate(new GeckoSession.ContentDelegate() { @Override public boolean shouldLoad(GeckoSession session, String uri, int flags, String mime, boolean isRedirect) { if (mime != null && mime.equals("application/pdf")) { session.download(uri); return false; // 阻止GeckoView加载该PDF链接 } return true; } });
先试第一种方法,一般就能解决问题;如果有特殊场景,再结合后面的方式调整。
内容的提问来源于stack exchange,提问作者Christophe
相关产品推荐
相关产品推荐

