html в кодировке base64 работает в браузере, но не в ярлыке на Android
Для IOS это абсолютно не проблема, но для Android я получаю "Приложение не установлено"
Следующий простой HTML-код:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
</head>
<body>
<p> hello < p>
</body>
</html>
кодирует в html URI base64 как:
данные: текст / HTML, кодировка = UTF-8;base64,PCFET0NUWVBFIEhUTUw+DQo8aHRtbCBsYW5nPSJlbi1VUyI+DQogICAgPGhlYWQ+DQogICAgICAgICAgICAgICAgPC9oZWFkPg0KICAgIDxib2R5Pg0KICAgICAgICA8cD4gaGVsbG8gPC9wPg0KICAgIDwvYm9keT4NCjwvaHRtbD4NCg==
Если вы вырезаете и вставляете указанный выше URI html-данных в браузер Android (я пробовал несколько, но в том числе и Chrome), он работает превосходно... т.е. выводит привет на страницу.
Теперь теоретически вы должны иметь возможность вручную создать значок ярлыка домашней страницы для этих данных URI, а затем вы сможете щелкнуть этот значок ярлыка, и он должен открыть страницу браузера и напечатать "привет", как это происходит при вырезании и вставке это в браузер. И на самом деле, в IOS это именно то, что он делает.
Но в Android я получаю "Приложение не установлено". Какое приложение? Почему он не распознается как URI данных и не запускается в браузере по умолчанию, как в IOS? Разве ярлыки данных URI не разрешены в Android? Мне действительно нужно как-то настроить Android, чтобы распознавать это как ярлык URI данных? Та же проблема, даже если это изображение данных в кодировке base64. Изображение работает, когда я вырезал / вставил его в браузер, но не, если я вручную создал ярлык.
Есть какие-нибудь подсказки?
1 ответ
В вашей реализации метода WebViewClient shouldOverrideUrlLoading должно возвращать false, если url начинается с data:text/html;charset=utf-8;base64