Google попросил меня указать адрес https://support.google.com/faqs/answer/9095419 в моем приложении для Android, что в основном означает не использовать механизм внедрения JavaScript для веб-страницы, загружаемой через HTTP.
Не использовать этот механизм (вариант 1) не работает для меня.Установка android: используетCleartextTraffic в false также не работает, так как приложение использует не-HTTPS-трафик в других местах.Поэтому у меня остается «вы можете убедиться, что любые затронутые WebViews не загружают какие-либо URL-адреса со схемами HTTP через loadUrl», что я с радостью делаю, поскольку мое приложение использует только URL-адреса file: /// для загрузки содержимого в WebView., что должно быть хорошо с точки зрения безопасности.Но как мне нужно кодировать метод shouldOverrideUrlLoading, чтобы программа проверки Google распознала, что я использую только файл: /// URLs?
Обратите внимание, что вопрос отличается от обоих Исправление для внедрения интерфейса JavaScriptУязвимость (потому что я понимаю, о чем идет речь) и В Android уязвимость интерфейса JavaScript, связанная с внедрением (потому что я не использую HTTP, а file: /// URLs).
Редактировать: добавление моего метода shouldOverrideUrlLoading.(Это не весь метод, но его существенная часть.)
@Override
public boolean shouldOverrideUrlLoading (WebView browser, String url) {
if (url.startsWith("file:///")) {
// This is my web site, so do not override; let my WebView load the page
browser.loadUrl(url);
return true;
}
// Otherwise, the link is not for a page on my site, or is an entirely different kind of URI
// (like tel:, geo: or mailto:), so launch another Activity that handles URLs
act.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}