将Android Activity传递到WebView和从WebView传递参数到Activity

4
我有一个应用程序,其中一个活动与我们的服务器通信并获取未付金额的详细信息。我想让用户使用支付网关支付未付金额。对于支付网关,我必须从活动中调用Webview的网页,并将未付金额详情和其他凭据传输到加载在Webview中的页面。交易结束后,我需要再次从Webview中的网页获取一些参数并返回给活动。
这是我想在活动和Webview中的页面之间实现的双向通信。我试图找到一种方法来实现它,但是找不到一个简单的示例可以进行这样的交换。
2个回答

7
您可以使用JavaScript WebAppInterface来实现您想要的功能,如此处所示。
主要思路是,在持有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添加接口
webView.addJavascriptInterface(new WebPayInterface(), "WebPayInterface");

最后,在您的HTML代码中使用JavaScript,可以调用以下内容。
WebPayInterface.PaymentFinished(100, true);

您的评论似乎解决了我的第二个问题,即网页与活动之间的通信。但是仍然需要解决活动到网页参数传递的问题。 - Jigskep
1
如果您的网页在您的控制下(您可以更改服务器代码),那么您可以将参数附加到您在webview.loadUrl("http://myserver.com/mypage?param1=foo&param2=bar");中加载的URL。 - linakis

-1

在使用Intents进行导航时,您可以利用Intent.putExtra(),还可以使用Shared Preferences和Bundle。请阅读Android文档了解Shared PreferencesIntentsBundle的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接