想要在 webview android 中完成 url 加载后将 webview 重定向到其他意图
Posted
技术标签:
【中文标题】想要在 webview android 中完成 url 加载后将 webview 重定向到其他意图【英文标题】:want to redirect webview to other intent when url loading has finished in webview android 【发布时间】:2015-03-06 09:41:53 【问题描述】:当 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)
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;
【问题讨论】:
你搜索了吗?显示代码。 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) if (url.equals("nmotion.dk/paymentconfirmation/")) Intent intent = new Intent(getContext(), RestaurantsListScreen.class); intent .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); getContext().startActivity(intent); view.destroy(); return true; return false; 我已经把代码贴在这里了 【参考方案1】:您必须在 WebView WebViewCLient 中实现完成加载程序
webview.setWebViewClient(new WebViewClient()
@Override
public void onPageFinished(WebView view, String url)
// create your intent here
super.onPageFinished(view, url);
);
编辑了提供的代码
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);
【讨论】:
你必须在 OnPageFinished 中移动意图(如果 (url.equals("nmotion.dk/paymentconfirmation/")) 在那里检查),因为 shouldOverrideUrlLoading 阻止 webview 加载 url(它在加载之前被触发) 【参考方案2】:试试这个
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);
);
【讨论】:
在完成方法中我的其他工作正在进行中。 为什么不应该在 "super.onPageFinished(view, url);" 之前调用 "if (url.equals("nmotion.dk/paymentconfirmation/")) .... " 与您的代码建议和 ryoghurt 代码建议。super.onPageFinished(view, url);
始终是方法的第一行。以上是关于想要在 webview android 中完成 url 加载后将 webview 重定向到其他意图的主要内容,如果未能解决你的问题,请参考以下文章
如何在android webview中获取完成youtube视频的事件