#android #webview
#Android #webview
Вопрос:
Я пытаюсь инициировать новое действие при нажатии на определенную ссылку в webview. Однако это не создает новое действие, а открывает ссылку в webview.
ActivityA.java
myWebView = (WebView) findViewById(R.id.webView3);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new WebPageInterface(this),"Android");
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBarRestaurant);
myWebView.setWebViewClient(new AppWebViewClients(progressBar));
myWebView.loadUrl(webaddress);
myWebView.reload();
public class AppWebViewClients extends WebViewClient {
private ProgressBar progressBar;
public AppWebViewClients(ProgressBar progressBar){
this.progressBar = progressBar;
progressBar.setVisibility(View.VISIBLE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("bayview")) {
Intent intent = new Intent(getBaseContext(), NewAct.class);
intent.putExtra("url","http://www.stackoverflow.com");
Log.v("PAGE","Page entered");
startActivity(intent);
}
return true;
}
@Override
public void onPageFinished(WebView view, String url){
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
}
}
веб-адрес (загрузка веб-страницы в webview)
<div data-demo-html="true">
<ul data-role="listview" data-theme="a" data-split-theme="b" data-split-icon="plus" data-inset="true" id="rest_mesgs">
<li id="0004">
<a href="bayview_abc.html">
<img style="height:80px;" src="BayView.jpg">
<h2 style="text-wrap: normal">Bay View</h2>
<p id="type" class="ui-li-aside"><strong>BB</strong></p>
<p> 123 Road</p>
</a>
</li>
</ul>
</div>
Комментарии:
1. Как только я удаляю jQuery, он работает нормально. Есть какая-то проблема с захватом URL-адреса с помощью jQuery?
Ответ №1:
Этот метод, казалось, сотворил волшебство: onLoadResource
. Вот что я сделал ->
public void onLoadResource(WebView view, String url){
if(url.contains("bayview")){
Intent intent = new Intent(getBaseContext(),NewAct.class);
intent.putExtra("url", "http://www.stackoverflow.com");
startActivity(intent);
}
}
Однако этот метод также заставляет ваш webview переходить по этой конкретной ссылке. Чтобы решить эту проблему, вы можете снова загрузить webview с тем же адресом onResume.
public void onResume(){
super.onResume();
myWebView.loadUrl(webaddress);
}