2013-04-22 62 views
2

快速的細節:我使用ASP.NET MVC 4在顯示的Android應用程序的WebView傳遞javascript中的變量作爲字符串

在我的web應用程序我有類似以下

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 
<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 
的javascript

我希望通過字符串'toast'將當前用戶帳戶傳遞給android。

我已經嘗試了幾種不同的方法將帳戶名稱作爲字符串傳遞給android,但都沒有工作,我認爲這是因爲JavaScript是在新線程上執行的。是否有可能做到這一點?

+0

你在WebView設置中啓用了JavaScript嗎? – 2013-04-22 15:14:17

+1

是的,請參閱我對以下答案的回覆,以查看我的問題在哪裏出現。 – Yorimitsu 2013-04-23 06:08:14

回答

0

我在編輯上一個答案,因爲這個問題的要求與標題構成有很大的不同。這不是關於如何將JavaScript變量作爲字符串傳遞給android的(java)類。這更多的是與Android的框架和ASP.NET Web服務之間的交互有關的問題。所以,在此我廣泛地發佈了一個處理這個話題的鏈接(一篇寫得很好的文章)http://www.codeproject.com/Articles/304302/Calling-Asp-Net-Webservice-ASMX-From-an-Android-Ap。 [注意:此解決方案使用KSOAP庫jar for android平臺。 ]

基本上你會希望有一個web服務方法返回登錄用戶,這個方法可以被Android的本地java類調用(例如,讓我們稱之爲'soapActivity')。現在,爲了將這些信息從java類'soapActivity'傳遞給webView,請使用webView實例變量的addJavascriptInterface()方法。希望這可以幫助。

+1

感謝您的回覆。我可以通過'toast'傳遞一個定義的字符串,但是我想知道如何將當前的用戶登錄名存儲在'toast'中。例如。在我的控制器中,我可以通過使用「'HttpContext.User.Identity.Name'」來設置用戶登錄詳細信息的savepath,但我不確定如何在視圖中執行此操作並將其存儲在「toast」中。 – Yorimitsu 2013-04-23 05:10:57

+0

據我瞭解,HttpContext.User.Identity.Name提供當前登錄到Windows操作系統的用戶名。但是這些信息只有'ASP.NET MVC 4'框架,而不是Android的webView。它只是一個瀏覽器,它並不(實際上不應該)具有破譯當前用戶登錄到ASP.NET框架等細節的功能。這些信息必須通過一些java腳本接口從ASP.NET框架傳遞給Android,恐怕它不可避免。 – Sriram 2013-04-23 16:27:05

+0

當我使用'HttpContext.User.Identity.Name'時,它返回登錄到Web服務的人員的用戶名。問題是,當我在android應用程序中使用WebView並登錄到ASP.NET Web服務時,「HttpContext.User.Identity.Name」可以工作,但是當我在android上使用'JavascriptInterface'時,因爲它是在一個新的線程,它不會與登錄的webview相關聯,並且不能識別'HttpContext.User.Identity.Name',甚至沒有登錄。但我的問題是你說的,我是否設置'toast'字符串來傳遞用戶名? – Yorimitsu 2013-04-23 23:02:58

相關問題