То, что я нашел до сих пор:
Вещи, которые запускают метод shouldOverrideUrlLoading
, запустят внешний браузер, если:
- URL-адрес не указан в белом списке
- некоторые схемы (
sms:
, tel:
, geo:
, mailto:
)
Но метод shouldOverrideUrlLoading
не всегда срабатывает - на Android 2.2 и более ранних версиях(а может и 2,3?). Методы Javascript, запускающие загрузку страницы (например, window.open()
или document.location.href =
), не запускают метод и поэтому независимо загружаются в WebView.
Ссылки, физически нажимаемые пользователем, похоже, всегда запускают метод.Использование механизма событий JS для запуска события щелчка по ссылке также может работать, я не пробовал.