在webview android中完成url加载后,是否希望将webview重定向到其他目的
当url加载失败时,我想将webview重定向到另一个活动 完整的。这是我的webview代码:-该类由webview扩展在webview android中完成url加载后,是否希望将webview重定向到其他目的,android,android-intent,android-activity,webview,Android,Android Intent,Android Activity,Webview,当url加载失败时,我想将webview重定向到另一个活动 完整的。这是我的webview代码:-该类由webview扩展 ** 1) This the method where I am doing code for redirecting webview to activity** >这是加载url的onPagefinished方法。 public void onPageFinished(WebView view, String url) {
** 1) This the method where I am doing code for redirecting webview to activity**
>这是加载url的onPagefinished方法。
public void onPageFinished(WebView view, String url) {
if (url.endsWith("paymentconfirmation/"))
((DibsPaymentScreen) getContext())
.setCancelDisallowed(false);
if (callbackUrl.equals(url)
&& statusCancelled.equals(paymentData.params
.get(statusKey))) {
paymentResultListener.cancelUrlLoaded();
} else if (callbackUrl.equals(url)
&& statusAccepted.equals(paymentData.params
.get(statusKey))) {
paymentResultListener.paymentAccepted(paymentData.params);
} else if (!windowIsLoaded) {
paymentWindowLoaded();
}
super.onPageFinished(view, url);
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("http://nmotion.dk/paymentconfirmation/")) {
Intent intent = new Intent(getContext(),
RestaurantsListScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getContext().startActivity(intent);
return true;
}
return false;
}
试试这个
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
if (url.endsWith("paymentconfirmation/"))
((DibsPaymentScreen) getContext())
.setCancelDisallowed(false);
if (callbackUrl.equals(url)
&& statusCancelled.equals(paymentData.params
.get(statusKey))) {
paymentResultListener.cancelUrlLoaded();
} else if (callbackUrl.equals(url)
&& statusAccepted.equals(paymentData.params
.get(statusKey))) {
paymentResultListener.paymentAccepted(paymentData.params);
} else if (!windowIsLoaded) {
paymentWindowLoaded();
}
if (url.equals("http://nmotion.dk/paymentconfirmation/")) {
Intent intent = new Intent(getContext(),
RestaurantsListScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getContext().startActivity(intent);
}
super.onPageFinished(view, url);
}
});
您必须在WebView WebViewCLient中实现on finish loader
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// create your intent here
super.onPageFinished(view, url);
}
});
编辑WHIT提供的代码
public void onPageFinished(WebView view, String url) {
if (url.equals("http://nmotion.dk/paymentconfirmation/")) {
Intent intent = new Intent(getContext(), RestaurantsListScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getContext().startActivity(intent);
return true;
} else {
if (url.endsWith("paymentconfirmation/")){
((DibsPaymentScreen) getContext()).setCancelDisallowed(false);
}
if (callbackUrl.equals(url) && statusCancelled.equals(paymentData.params.get(statusKey))) {
paymentResultListener.cancelUrlLoaded();
} else if (callbackUrl.equals(url)
&& statusAccepted.equals(paymentData.params.get(statusKey))) {
paymentResultListener.paymentAccepted(paymentData.params);
} else if (!windowIsLoaded) {
paymentWindowLoaded();
}
super.onPageFinished(view, url);
}
}您搜索了吗?显示代码。@Override public boolean shoulldOverrideUrlLoading(WebView视图,字符串url){if(url.equals(“){Intent Intent Intent=new Intent(getContext(),RestaurantListScreen.class);Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);getContext().startActivity(Intent);view.destroy();return true;}return false;}我已经在finish方法上发布了这里的代码,我的其他工作正在执行中。为什么不在“super.onPageFinished(view,url);”之前调用“if(url.equals(“){….}”)以及您的代码建议和Ryoghert代码建议。
super.onPageFinished(view,url)
始终是该方法的第一行。您必须在OnPageFinished中移动意图(在此处检查是否为(url.equals(“)),因为shouldOverrideUrlLoading阻止webview加载url(它在加载之前被触发)