Android WebView открывается в WebView, а не в браузере по умолчанию.
Я сделал одно примерное приложение с помощью WebView, в этом веб-представлении URL-адрес поступает из веб-служб. Он работает нормально, но если я нажму любую ссылку в этом веб-браузере, он автоматически перейдет на веб-браузер по умолчанию. Но я хочу открыть только в своем веб-приложении приложения. Здесь мой код:
WvBikeSite = (WebView) findViewById(R.id.wv_bikeWebsite);
wvBikeSite.loadUrl(getBundle.getString("www"));
Ответы
Ответ 1
Вам нужно настроить webViewClient для вашего веб-браузера.
Пример:
this.mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
});
Ответ 2
Вам нужно настроить WebViewClient, чтобы переопределить это поведение (открытие ссылок с помощью веб-браузера). Очевидно, что ваш WebView объявлен, но затем настройте WebViewClient следующим образом:
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());
Затем вам нужно определить свой WebViewClient():
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.example.com")) {
// Designate Urls that you want to load in WebView still.
return false;
}
// Otherwise, give the default behavior (open in browser)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
Затем запустите свой WebViewClient:
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());
http://developer.android.com/guide/webapps/webview.html
Ответ 3
Я сталкиваюсь с той же проблемой, и я просто исправил ее, добавив одну строку.
webview.setWebViewClient(new WebViewClient());
и это решило мою проблему.
Ответ 4
Вам нужно вызвать wvBikeSite.setWebViewClient, например:
MyWebViewClient wvc = new MyWebViewClient();
wvBikeSite.setWebViewClient(wvc);
Где MyWebViewClient переопределяет shouldOverrideUrlLoading, а именно:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
Ответ 5
Вы всегда можете открыть URL-адрес в веб-браузере, используя это:
@Override
public void onCreate(Bundle savedInstanceState) {
webview.setWebViewClient(new MyWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setPluginsEnabled(true);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onLoadResource(WebView view, String url){
}
}
Ответ 6
Мне понравилось это и его работа прекрасна.
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.startsWith("http://")) {
mWebView.loadUrl(url);
return true;
} else {
return false;
}
}
});
Ответ 7
Попробуйте это, этот метод устарел.
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
Ответ 8
Вот мой код, как решить указанную выше проблему (при нажатии на ссылку, запрашивающей браузер по умолчанию для оппонирования ссылки)
import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;
import android.view.Menu;import android.webkit.WebChromeClient;
import android.webkit.WebView;public class MainActivity extends Activity{
`@SuppressLint("SetJavaScriptEnabled")@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String url="http://google.com";WebView Webview=(WebView) this.findViewById(R.id.webView1); Webview.getSettings().setJavaScriptEnabled(true);Webview.loadUrl(url);}@Override public boolean onCreateOptionsMenu(Menu menu){//Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);return true;}`}
Ответ 9
Это откроет любую конкретную ссылку только в вашем приложении...
WebView web;
web = (WebView) findViewById(R.id.web);
web.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.startsWith("http://www.xplorerstrick.net")) {
view.loadUrl(url);
progDailog.show();
return true;
}
else {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
}
Ответ 10
webview.setWebViewClient(new WebViewClient());
webview.loadUrl(url);
Установить веб-клиент.
Ответ 11
Большая часть ответа верна, но обратите внимание: SupportMultipleWindows должен быть установлен как false.
mWebView.getSettings().setSupportMultipleWindows(false);
и теперь установите webViewClint и загрузите URL-адрес.
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
Log.d(TAG,"URL: "+url);
view.loadUrl(url);
/**
* if you wanna open outside of app
if (url != null && url.startsWith(URL)) {
view.loadUrl(url);
return false;
}
// Otherwise, give the default behavior (open in browser)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);**/
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});