【发布时间】:2020-12-03 04:03:01
【问题描述】:
所以我试图在我的应用程序的 web 视图中显示我从 reddit 中提取的 gif。从 reddit api 我检索一个帖子数据的 JSON,从media_embed/content 我从 Gyfcat 获得一个 iFrame 的 html,如下所示:
<iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgfycat.com%2Fifr%2Fhalffeistyharlequinbug&display_name=Gfycat&url=https%3A%2F%2Fgfycat.com%2Fhalffeistyharlequinbug&image=https%3A%2F%2Fthumbs.gfycat.com%2FHalfFeistyHarlequinbug-size_restricted.gif&key=2aa3c4d5f3de4f5b9120b660ad850dc9&type=text%2Fhtml&schema=gfycat" width="600" height="600" scrolling="no" title="Gfycat embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe>
为此,我像这样对其进行 URL 解码:
val gifData = json["media_embed"]["content"]
val decoded = URLDecoder.decode(gifData, "UTF-8")
我是这样显示的:
feedItemWebView.settings.javaScriptEnabled = true
feedItemWebView.loadData(decoded, "text/html", "UTF-8")
我也尝试过这样做,而不是使用 URLDecoder:
val decoded = gifData.replace("<", "<")
.replace(">", ">")
.replace("&", "&")
并以与上述相同的方式将其放入 WebView 会导致 webview 加载,但仅显示静态图像(而不是预期的 gif),如下所示:
我需要做些什么才能让它真正播放 gif 吗?
如果我尝试将相同的内容放入这样的 html 文件中:
<iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgfycat.com%2Fifr%2Fhalffeistyharlequinbug&display_name=Gfycat&url=https%3A%2F%2Fgfycat.com%2Fhalffeistyharlequinbug&image=https%3A%2F%2Fthumbs.gfycat.com%2FHalfFeistyHarlequinbug-size_restricted.gif&key=2aa3c4d5f3de4f5b9120b660ad850dc9&type=text%2Fhtml&schema=gfycat" width="600" height="600" scrolling="no" title="Gfycat embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe>
我的浏览器会正确加载它,所以肯定是 WebView 或我的 WebView 设置有问题
【问题讨论】:
标签: android html kotlin iframe webview