Открытие веб-браузера не в новом браузере

Я реализую webview. Я хочу две кнопки в верхней части веб-страницы.

У меня есть один вертикальный линейный макет, внутри которого один горизонтальный макет с двумя кнопками и один веб-просмотр вне горизонтальной компоновки.

Я просто загружаю URL-адрес Google в код Java.

Каждый раз, когда я запускаю приложение, он открывает новый браузер поверх приложения, а кнопки скрываются. Он не показывает кнопки над веб-просмотром. Пожалуйста, помогите и скажите мне, как загрузить URL-адрес в веб-обозревателе, не открывая другого браузера, или как я могу предотвратить его, открыв собственный браузер, чтобы страница загружалась в веб-обозреватель, а не в новый браузер.

Спасибо всем

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-адрес …

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading%28android.webkit.WebView,%20java.lang.String%29

Моя реализация 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-адресом, который я хотел открыть.

  • Есть ли лучший способ обновить WebView?
  • Android WebView onReceivedError ()
  • Android WebView не загружает URL-адрес HTTPS
  • Пример просмотра webview shouldinterceptrequest
  • Android webview запускает браузер при вызове loadurl
  • Как сделать прослушиватель прокрутки для WebView в Android
  • SwipeRefreshLayout + WebView, когда позиция прокрутки находится наверху
  • JavaFX 8 WebEngine: Как получить console.log () из javascript в System.out в java?
  • Eclipse продолжает сбой
  • WebView загружает веб-сайт в Интернете, загружает локальный файл в автономном режиме
  • Как остановить воспроизведение видео на YouTube в Android-браузере?
  • Давайте будем гением компьютера.