После создания и присоединения WebViewClient
к WebView
вы изменили поведение по умолчанию, при котором Android позволяет ActivityManager передавать URL-адрес в браузер (это происходит только в том случае, если в представлении не установлен клиент) см. документы по методу для более .
После того как вы прикрепите WebViewClient
, возвращая ложную форму shouldOverrideUrlLoading()
, передает URL-адрес WebView
, в то время как возвращение true говорит WebView
ничего не делать ... потому что ваше приложение позаботится об этом. К сожалению, ни один из этих путей не позволяет Android передавать URL-адрес в браузер. Примерно так должно решить вашу проблему:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
try {
URL urlObj = new URL(url);
if( TextUtils.equals(urlObj.getHost(),"192.168.1.34") ) {
//Allow the WebView in your application to do its thing
return false;
} else {
//Pass it to the system, doesn't match your domain
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
//Tell the WebView you took care of it.
return true;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
Я знаю, что это кажется немного нелогичным, поскольку вы ожидаете, что return false;
полностью обойдет WebView
, но это не тот случай, когда вы используете пользовательский WebViewClient
.
Надеюсь, это поможет!