Открытие веб-браузера не в новом браузере
Я реализую webview. Я хочу две кнопки в верхней части веб-страницы.
У меня есть один вертикальный линейный макет, внутри которого один горизонтальный макет с двумя кнопками и один веб-просмотр вне горизонтальной компоновки.
Я просто загружаю URL-адрес Google в код Java.
- Воспроизведение видео в формате HTML5 на полноэкранном режиме в веб-обозревателе Android
- Android WebView JellyBean -> Не должно быть: не найдены узлы проверки на основе прямой основы
- WebView Rendering Issue в Android KitKat
- Используйте настраиваемую панель контекстных действий для выбора текста WebView
- Кэширование в веб-браузере Android
Каждый раз, когда я запускаю приложение, он открывает новый браузер поверх приложения, а кнопки скрываются. Он не показывает кнопки над веб-просмотром. Пожалуйста, помогите и скажите мне, как загрузить URL-адрес в веб-обозревателе, не открывая другого браузера, или как я могу предотвратить его, открыв собственный браузер, чтобы страница загружалась в веб-обозреватель, а не в новый браузер.
Спасибо всем
- Почему Android WebView отказывается от ввода пользователя?
- Хотите загрузить настольную версию в мой веб-просмотр с помощью uastring
- Загружать локальный html в WebView?
- Экран мигает при использовании веб-просмотра со вспышкой
- Как открыть локальный файл PDF в WebView на Android?
- WebView и HTML5
- Как отобразить один вид в качестве наложения другого?
- Android WebView с искаженными символами UTF-8.
Ya. Вы должны реализовать class WebViewClient
и метод Override
shouldOverrideURLLoading()
в этом classе.
Зачем ? Поскольку webview
просто открывает вашу «точную ссылку», если эта ссылка перенаправляет другие ссылки, андроид откроет браузер по умолчанию для этого действия.
В вашем примере, как вы знаете, при подключении к google.com
google будет перенаправлять на google в вашей стране. Например, если вы находитесь в Китае, google отправится на google.com.cn
, если во Вьетнаме будет google.com.vn
.
Вот мой простой пример: (вы можете себе представить, что это новый браузер: смех)
Во-первых, это XML-файл макета:
Вот код основного вида деятельности:
package com.basic; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; public class WebViewExample extends Activity{ WebView webView; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webview); Button button = (Button) findViewById (R.id.run); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { gotoPage(); } }); } private void gotoPage(){ EditText text = (EditText) findViewById(R.id.url); String url = text.getText().toString(); WebSettings webSettings = webView.getSettings(); webSettings.setBuiltInZoomControls(true); webView.setWebViewClient(new Callback()); //HERE IS THE MAIN CHANGE webView.loadUrl(url); } private class Callback extends WebViewClient{ //HERE IS THE MAIN CHANGE. @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return (false); } } }
Надеюсь, это поможет вам 🙂
Добавляя следующий код до того, как loadUrl () решит эту проблему,
wv.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; }});
Это должно выполняться командой shouldOverrideUrlLoading () из WebViewClient. Здесь идет Android doc для shouldOverrideUrlLoading,
Дайте хост-приложению возможность взять на себя управление, когда новый URL-адрес будет загружен в текущем WebView. Если WebViewClient не предоставлен, по умолчанию WebView попросит Activity Manager выбрать правильный обработчик для URL-адреса. Если WebViewClient предоставлен, верните true, это означает, что приложение-хозяин обрабатывает URL-адрес, а return false означает, что текущий WebView обрабатывает URL-адрес …
Моя реализация XML:
Моя реализация Java:
WebView webView; public final String GlobalUrl = "http://slashdot.org/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_application_activity); webView = (WebView) findViewById(R.id.webView); loadWebViewLoad(webView); } private void loadWebViewLoad(WebView webview) { webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webview.getSettings().setSupportMultipleWindows(true); webview.setWebViewClient(new WebViewClient()); webview.setWebChromeClient(new WebChromeClient()); webview.loadUrl(GlobalUrl); }
И конечный результат:
Я попробовал это. он работает для меня. он не открывает новое окно. он откроет только страницу веб-просмотра. его скрытие для нового браузера, запрашивающего окно.
private WebView webView; String strUrl="url" ; webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(strUrl); webView.setWebViewClient(new WebViewClient());
Добавьте строку ниже в файл xml, который имеет веб-просмотр
tools:context=".MyActivity"
(название вашей деятельности)
У меня была одна и та же проблема, и, к счастью, после просмотра веб-страниц в течение часа я смешал некоторые вещи, которые я нашел, и это сработало.
это код:
WebView webView; webView = ((WebView) rootView.findViewById(R.id.detail_area)); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl(mItem.link);
где «detail_area» был моим веб-просмотром, rootView был моим выбранным элементом внутри «Master / Detail Flow», ссылка была URL-адресом, который я хотел открыть.