0

对于IOS,这绝对没问题,但对于Android,我得到“未安装应用程序”

以下简单的html代码:

<!DOCTYPE HTML>
<html lang="en-US">
    <head>
    </head>
    <body>
        <p> hello < p>
    </body>
</html>

编码为 base64 html URI 为:

data:text/html;charset=utf-8;base64,PCFET0NUWVBFIEhUTUw+DQo8aHRtbCBsYW5nPSJlbi1VUyI+DQogICAgPGhlYWQ+DQogICAgICAgICAgICAgICAgPC9oZWFkPg0KICAgIDxib2R5Pg0KICAgICAgICA8cD4gaGVsbG8gPC9wPg0KICAgIDwvYm9keT4NCjwvaHRtbD4NCg==

如果您将上面的 html 数据 URI 剪切并粘贴到 Android 浏览器中(我尝试了几个,但包括 Chrome),它工作得非常好......即它在页面上打印出 hello。

现在,理论上您应该能够手动为该数据 uri 创建一个主页快捷方式图标,然后您应该能够单击该快捷方式图标,它应该打开一个浏览器页面并像剪切和粘贴时一样打印“hello”它进入浏览器。事实上,在 IOS 中,这正是它所做的。

但在 Android 中,我却得到“未安装应用程序”。什么应用?为什么它不像在 IOS 中那样被识别为数据 uri 并在默认浏览器中执行?Android中不允许使用数据URI的快捷方式吗?我真的需要以某种方式配置 Android 以将其识别为数据 URI 快捷方式吗?即使它是 base64 编码的数据图像,也会出现同样的问题。当我将图像剪切/粘贴到浏览器中时图像有效,但如果我手动创建快捷方式则无效。

有什么线索吗?

4

1 回答 1

0

在 WebViewClient 方法的实现中,如果 url 以 data:text/html;charset=utf-8;base64 开头,则 shouldOverrideUrlLoading 必须返回 false

于 2016-09-06T15:42:25.897 回答