对于 IOS,这绝对没问题,但对于 Android,我收到“应用程序未安装”
以下简单的html代码:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
</head>
<body>
<p> hello < p>
</body>
</html>
编码为 base64 html URI:
数据:文本/html;字符集=utf-8;base64,PCFET0NUWVBFIEhUTUw+DQo8aHRtbCBsYW5nPSJlbi1VUyI+DQogICAgPGhlYWQ+DQogICAgICAgICAgICAgICAgPC9oZWFkPg0KICAgIDxib2R5Pg0KICAgICAgICA8cD4gaGVsbG8g PC9wPg0KICAgIDwvYm9keT4NCjwvaHRtbD4NCg==
如果您将上面的 html 数据 URI 剪切并粘贴到 Android 浏览器中(我尝试了几种,但包括 Chrome),它工作得很好......即它将 hello 打印到页面上。
现在,理论上您应该能够手动创建该数据 uri 的主页快捷方式图标,然后您应该能够单击该快捷方式图标,它应该打开一个浏览器页面并打印“hello”,就像您剪切和粘贴时一样将其粘贴到浏览器中。事实上,在 IOS 中这正是它的作用。
但在 Android 中,我却得到“应用程序未安装”。什么应用?为什么它不像在 IOS 中那样被识别为数据 uri 并在默认浏览器中执行它? Android 中不允许数据 URI 的快捷方式吗?我真的需要以某种方式配置 Android 来将其识别为数据 URI 快捷方式吗?即使它是 base64 编码的数据图像,也会出现同样的问题。当我将图像剪切/粘贴到浏览器中时图像可以工作,但如果我手动创建快捷方式则不行。
有什么线索吗?
在 WebViewClient 方法的实现中,如果 url 以 data:text/html;charset=utf-8;base64 开头,则 shouldOverrideUrlLoading 必须返回 false