У меня есть WebView
, в котором я хотел бы привязать теги с rel=external
, чтобы открыть их в браузере Android, но все остальные ссылки, чтобы остаться в WebView
.WebView ceding rel = внешние ссылки на Activity Manager
Таким образом, содержание будет загружаться в WebView
, если пользователь вводит ссылку, разметка выглядит следующим образом:
<a href="http://example.com/">Whatever</a>
Но содержание будет загружаться в Android браузер, если пользователь нажимает на ссылку, разметка выглядит это:
<a href="http://example.com/" rel="external">Whatever</a>
Вот мой соответствующий код (с одним битым псевдокодом идентифицированного с комментарием) в WebViewClient
коде:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (! rel=external) { // <-- That condition...how do I do that?
view.loadUrl(url);
return false;
} else {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
}
Был бы лучший способ определить, есть ли атрибут/значение rel=external
, чтобы каким-то образом использовать addJavascriptInterface()
и сообщить JavaScript Java, есть ли атрибут rel
и каково его значение?
Или есть лучший способ?
(Я ищу решение, которое не включает проверку домена URL-адреса, поскольку существует произвольное количество доменов, которые должны рассматриваться как внутренние и которые я не могу знать заранее или легко определить, fly.)
Это выглядит очень многообещающим. Не понял, что это будет означать, что я не смогу использовать 'shouldOverrideUrlLoading()', но для меня это совсем не проблема. – Trott
Ну, вы все равно можете использовать 'shouldOverrideUrlLoading()' для других вещей, если хотите. Фактически, вы, вероятно, могли бы изменить его, чтобы вы сигнализировали интерфейс JavaScript из JavaScript, который вводит через 'loadUrl', чтобы сообщить вашему Java-коду, какой URL-адрес является внешним, сохранить его в какой-то таблице и затем выполнить поиск, когда' shouldOverrideUrlLoading' , но я нахожу, что излишне сложно и, возможно, подвержено ошибкам (что, если у вас есть две ссылки на один и тот же URL-адрес, но только один ref = внешний? Не могу понять, почему это произойдет, но если бы это произошло, ломать). – kabuko