Вот мой код:
public class MainActivity extends Activity { @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView mywebview = (WebView) findViewById(R.id.webview); mywebview.loadUrl("http://www.shufflemylife.com/shuffle"); WebSettings webSettings = mywebview.getSettings(); webSettings.setJavaScriptEnabled(true); mywebview.setWebViewClient(new WebViewClient()); } class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.contains("/shuffle")){ Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); } return true; } } }
В принципе, я хочу, чтобы любой URL-адрес, содержащий '/ shuffle' для загрузки внутри WebView, и все остальное, которое нужно было открыть во внешнем браузере. Это выполнимо? Насколько я могу это сделать?
Спасибо за любую помощь!
Это выполнимо?
Да.
Насколько я могу это сделать?
Закрыть, но назад. Поведение WebView
по WebView
заключается в отображении ссылок во внешнем браузере. Следовательно, если url.contains("/shuffle")
, вы хотите вызвать loadUrl()
в своем WebView
чтобы сохранить внутреннюю ссылку и в этом случае вернуть значение true
. Если это URL-адрес, который вы хотите обработать нормально, верните false
.
Чтобы уточнить, вот как вы должны написать свой метод toOverrideUrlLoading:
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("/shuffle")) { mWebView.loadUrl(url); return false; } else { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); return true; } }