2013-10-25 50 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