2013-04-22 3 views
2

Быстрые детали: Я использую ASP.NET MVC 4 отображается на Android приложений WebViewПередача яваскрипта переменной в виде строки

В моем веб-приложение, у меня есть JavaScript, подобный следующему

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

Я хочу передать текущую учетную запись пользователя на андроид через строку «toast».

Я пробовал несколько разных методов, чтобы передать имя учетной записи в виде строки в андроид, но никто не работал, и я думаю, что это потому, что javascript выполняется в новом потоке. Можно ли сделать это?

+0

Вы включили javascript в настройках WebView? –

+1

Да, см. Мой ответ на ответ ниже, чтобы узнать, где моя проблема. – Yorimitsu

ответ

0

Я редактирую предыдущий ответ, так как требования этого вопроса сильно отличаются от поставленного заголовка. Речь идет не о том, как передавать переменную Javascript в виде строки в класс android (java). Это скорее вопрос, связанный с взаимодействием между фреймворком Android и веб-сервисом ASP.NET. Итак, настоящим я размещаю одну из ссылок, которая посвящена этой теме широко (хорошо написанная статья) http://www.codeproject.com/Articles/304302/Calling-Asp-Net-Webservice-ASMX-From-an-Android-Ap. [ПРИМЕЧАНИЕ. В этом решении используется банкомат библиотеки KSOAP для платформы Android. ]

В принципе, вы хотели бы, чтобы один из методов веб-службы возвращал зарегистрированного пользователя, этот метод может быть вызван собственным классом Java Java (например, назовем его «soapActivity»). Теперь, чтобы передать эту информацию в webView из класса Java soapActivity, используйте метод addJavascriptInterface() вашей переменной экземпляра webView. Надеюсь это поможет.

+1

Спасибо за ваш ответ. Я могу передать определенную строку через «toast», но мне было интересно, как можно сохранить имя пользователя текущего пользователя в «toast». например. В моем контроллере я могу настроить путь сохранения к деталям регистрации пользователей, используя «HttpContext.User.Identity.Name», но я не уверен, как реализовать это в представлении и сохранить его в «тосте». – Yorimitsu

+0

Насколько я понимаю, HttpContext.User.Identity.Name предоставляет имя пользователя, которое в настоящее время входит в систему операционной системы Windows. Но эта информация известна только для «ASP.NET MVC 4», а не для веб-браузера Android. Его просто браузер, он (на самом деле не должен) имеет возможность расшифровать такие данные, как текущий пользователь, зарегистрированный в рамках ASP.NET. Эта информация должна быть передана из структуры ASP.NET через некоторый интерфейс Java-скрипта для Android, я боюсь, что это неизбежно. – Sriram

+0

Когда я использую 'HttpContext.User.Identity.Name', он возвращает имя пользователя, зарегистрированного в веб-службе. Дело в том, что, когда я использую WebView в приложении android, а затем запишусь в веб-службу ASP.NET, «HttpContext.User.Identity.Name» работает, но когда я использую 'JavascriptInterface' на андроиде, потому что он находится в новом потоке, который не ассоциируется с зарегистрированным в веб-просмотре и не распознает «HttpContext.User.Identity.Name» и по сути даже не входит в систему. Но мой вопрос заключается в том, что вы заявили, как я собираюсь установить строку «toast» для передачи имени пользователя? – Yorimitsu

Смежные вопросы