2013-10-25 53 views
2

我有一个应用程序,其中活动与我们的服务器进行通信并获取未完成金额的详细信息。我希望用户使用支付网关支付未付金额。对于支付网关,我必须从webview调用网页并将未完成金额的详细信息和其他凭据从活动转移到在webview中加载的页面。在事务结束时,我再次需要从webview中的web页面返回一些参数给活动。Android活动到WebView和WebView到活动参数传递

这是一个双向交流,我想要在活动和加载到webview中的页面之间实现。我试图找到一种方法来做到这一点,但找不到一个这样的交流的简单例子。

回答

5

您可以使用JavaScript WebAppInterface实现您想要的效果,如演示here

主要的概念是,你在持有你的WebView的Activity中创建一个JavaScript接口。

private class WebPayInterface { 
    int amount; 
    boolean success; 

    @JavascriptInterface 
    public void PaymentFinished(int amount, boolean success) { 
     this.amount = amount; 
     this.success = success; 

     // do whatever you want in the parent activity. 
    } 
} 

接口添加到网页视图

webView.addJavascriptInterface(new WebPayInterface(), "WebPayInterface"); 

最后在HTML代码中使用JavaScript你可以叫

WebPayInterface.PaymentFinished(100, true); 
+0

您的意见似乎解决我的第二个部分是网页的活动通信。仍然活动到网页参数传递留下。 – Jigskep

+1

如果您的网页在您的控制之下(您可以更改服务器代码),那么您可以将参数添加到您的url中,并将其加载到您的'webview.loadUrl(“http://myserver.com/mypage?param1=foo¶m2=bar” );' – linakis

-1

在使用Intents,Shared Preferences和Bundle进行导航时,您可以使用Intent.putExtra()。请阅读Android文档Shared Preferences,Intents,Bundle