Как открыть внешний URL в браузере по умолчанию и все внутренние ссылки в WebView Android?
Я использую WebView
на моей странице и используя локальный файл assets
для отображения в WebView
но на главной странице HTML внешний веб-сайт (не локальный), и я хочу открыть только эту ссылку в браузере по умолчанию на устройстве пользователя
Это мой код в методе onCreate
WebView v;
v=(WebView) rootView.findViewById(R.id.webView1);
v.getSettings().setJavaScriptEnabled(true);
WebViewClient vc= new WebViewClient();
v.setWebViewClient(vc);
v.loadUrl("file:///android_asset/home.html");
Когда я запускаю приложение, внутренняя ссылка работает хорошо, но внешняя ссылка "www.apple.com" ru в веб-представлении
Я искал тот же вопрос и нашел это решение, но внешняя ссылка все еще открывается в WebView
WebView webView = (WebView) rootView.findViewById(R.id.webView1);
webView.setWebViewClient(new MyWebViewClient());
String url = "file:///android_asset/home.html";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
и класс
class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("http")){ // Could be cleverer and use a regex
return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
} else {
view.loadUrl(url); // Stay within this webview and load url
return true;
}
}
}
1 ответ
Решение
+ Изменить
if (url.contains("http")) { // Could be cleverer and use a regex
return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
} else {
view.loadUrl(url); // Stay within this webview and load url
return true;
}
в
if (url.contains("http")) { // Could be cleverer and use a regex
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
mContext.startActivity(intent);
return true;
}
return false;
Примечание: заменить mContext
с вашим контекстом деятельности.