从webview返回活动

时间:2015-03-26 15:24:47

标签: java android

我正在设置app的互动付款。为此,我需要将用户带到交互式网站,如果成功,它将来到内部服务器(称为success_url),如果它失败,那么它将来到failure_url。到目前为止一切正常。

但是,在成功或失败之后,我需要回到我最后的活动(成功或失败)。如何通过回复回到之前的活动?

3 个答案:

答案 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回调的监听器。