2010-03-04 5 views
195

Я загрузил внешний URL-адрес в свой WebView. Теперь мне нужно то, что когда пользователь нажимает на ссылки на загруженной странице, он должен работать как обычный браузер и открывать ссылку в том же WebView. Но он открывает браузер по умолчанию и загружает страницу там?Щелчок по URL-адресам открывает браузер по умолчанию

Я включил JavaScript. Но все же это не работает. Я что-то забыл?

ответ

339

Если вы используете WebView, вам придется перехватывать клики самостоятельно, если вы не хотите поведения по умолчанию Android.

Вы можете отслеживать события в WebView с использованием WebViewClient. Метод, который вы хотите, - shouldOverrideUrlLoading(). Это позволяет вам выполнять свое действие, когда выбран конкретный URL-адрес.

Вы установили WebViewClient вашего WebView, используя setWebViewClient() method.

Если вы посмотрите на WebView sample in the SDK, то есть пример, который делает именно то, что вы хотите. Это так же просто, как:

private class HelloWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
} 
+87

Похоже, это поведение по умолчанию для 'WebViewClient' и не нуждается в подклассы, если это все, что вы делаете. Я получил это для работы, просто выполнив 'myWebView.setWebViewClient (новый WebViewClient()),' – Adam

+7

@ dave-webb, пожалуйста, обновите образец, чтобы не вызвать loadUrl. Все, кто читает это, не копируем код (верните false из обратного вызова вместо вызова view.loadUrl). Вызов loadUrl вводит тонкую ошибку, если у вас есть iframe внутри страницы с пользовательским URL-схемой схемы (скажем