我正在设置app的互动付款。为此,我需要将用户带到交互式网站,如果成功,它将来到内部服务器(称为success_url
),如果它失败,那么它将来到failure_url
。到目前为止一切正常。
但是,在成功或失败之后,我需要回到我最后的活动(成功或失败)。如何通过回复回到之前的活动?
答案 0 :(得分:1)
覆盖之前活动中的OnActivityResult,并使用bundle和setResult方法返回,
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (url.contains("success-url"))
{
//call intent to navigate to activity
setResult(RESULT_OK, bundle);
ActivityWebview.this.finish();
}
}
}
答案 1 :(得分:1)
通过明确地说明在交易结束时,网页将在页面上显示一个链接,例如:“确定”,“继续”等,其中的网址将是等于:
<a href="success">Continue</a>
<a href="failure">Continue</a>
取决于交易状态。
现在,你可以做的是,当用户点击该链接时拦截网址。
这可以通过创建自定义WebViewClient
,覆盖shouldOverrideUrlLoading()
,拦截网址,并根据网址类型采取适当的操作来完成。
示例:
WebView webView = (WebView) findViewById(R.id.add_funds_web_view);
webView.setWebViewClient(new CustomWebClient());
webView.getSettings().setJavaScriptEnabled(true);
// .........
private class CustomWebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("success")) {
// set success result and finish
return true;
}else if (url.equals("failure")){
// set failure result and finish
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
}
答案 2 :(得分:0)
使用WebView.html#addJavascriptInterface在Java代码(在您的活动中)注册js回调的监听器。