Android 操作快速查看 - 文件问题 - 尝试打开远程 pdf 文档
Posted
技术标签:
【中文标题】Android 操作快速查看 - 文件问题 - 尝试打开远程 pdf 文档【英文标题】:Android Action Quick View - Problem with file - trying to open remote pdf document 【发布时间】:2019-12-31 17:49:43 【问题描述】:我在 android 应用程序中使用 webview。当用户单击下载链接时,我正在捕获请求(shouldOverrideUrlLoading)并通过 API 请求执行下载 - 因为只有在用户通过身份验证时才能下载。因此我使用下面的代码。有多少文件没有正确打开,快速查看显示错误消息“文件问题”(附截图)。
设置为 i.data 的 URL 可以正常工作(身份验证和下载也可以在任何浏览器的私有模式下工作)
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean
if (url.indexOf("example.com") !== -1 && (url.indexOf(".pdf") !== -1 || url.indexOf(".xlsx") !== -1))
println("trying to override url loading")
val i = Intent(Intent.ACTION_QUICK_VIEW)
val preferences = contextOfApplication!!.getSharedPreferences("example", Context.MODE_PRIVATE)
val email = preferences.getString("email", "")
val token = preferences.getString("token", "")
i.data = Uri.parse("http://example.com/api/getfile/" + url.substring(url.lastIndexOf('/')+1) + "?mail=" + URLEncoder.encode(email, "UTF-8") + "&token=" + URLEncoder.encode(token, "UTF-8") + "&relative_path=" + URLEncoder.encode(URL(url).path))
contextOfActivity!!.startActivity(i)
return true
return false
网址可能如下所示:
http://example.com/api/getfile/example.pdf?mail=xyz&token=xyz&relative_path=example.pdf
我将文件名(由服务器重写)添加到 URL 的末尾,在 Get 参数之前,以便 Android 可以检测到正确的文件扩展名。
也许 ACTION_QUICK_VIEW 不支持包含 GET 参数的 URL?是否可以绕过此错误或暂时下载文件并在之后打开它?
提前致谢!
【问题讨论】:
【参考方案1】:我会将the documentation 解释为Uri
必须是content
Uri
。
此外,http
在较新版本的 Android 上默认被禁止(与 https
相比),因此即使支持 Web URL,http
方案也可能不支持。
您可能需要download the content yourself,然后使用FileProvider
制作content
Uri
以与您的Intent
一起使用。
【讨论】:
感谢您的回答。我会试试这个,让你知道它是否有效! 这个问题实际上是通过切换到 https 来解决的!我正在测试的开发环境直到现在还没有证书。以上是关于Android 操作快速查看 - 文件问题 - 尝试打开远程 pdf 文档的主要内容,如果未能解决你的问题,请参考以下文章
Android 怎么快速查看xml文件被调用的哪个java文件
黎活明8天快速掌握android视频教程--24_网络通信之网页源码查看器