2013-04-29 3 views
0

Я пишу приложение для Android. Существует Webview, и я хочу поместить текст в фокусную TextArea на веб-сайт после нажатия кнопки в моем приложении. Я не нашел решения в google.android: Поместите текст в TextBox в Webview

Важно вставить текст, это не вид входа, где данные могут передаваться методом POST, пользователь должен уметь видеть вход.

Надеюсь, вы можете мне помочь.

Спасибо!

ответ

0

общественный недействительный addJavascriptInterface (объект Object, имя String) Добавлены в уровне API 1 Внедряет предоставленный объект Java в этот WebView. Объект вводится в контекст JavaScript основного фрейма с использованием предоставленного имени. Это позволяет получить доступ к методам объекта Java из JavaScript. Для приложений, ориентированных на уровень API JELLY_BEAN_MR1 и выше, доступ к JavaScript можно получить только из общедоступных методов, которые аннотируются с помощью JavascriptInterface. Для приложений, ориентированных на уровень API JELLY_BEAN или ниже, можно получить доступ ко всем общедоступным методам (включая унаследованные), см. Важную заметку по безопасности, приведенную ниже. Обратите внимание, что введенные объекты не будут отображаться в JavaScript до тех пор, пока страница не будет следующей (повторно) загружена. Например:

class JsObject { 
@JavascriptInterface 
public String toString() { return "injectedObject"; } 
} 
webView.addJavascriptInterface(new JsObject(), "injectedObject"); 
webView.loadData("", "text/html", null); 
webView.loadUrl("javascript:alert(injectedObject.toString())"); 

ВАЖНО:

Этот метод может быть использован, чтобы JavaScript для управления приложением хоста. Это мощная функция, но также представляет угрозу безопасности для приложений, ориентированных на уровень API JELLY_BEAN или ниже, поскольку JavaScript может использовать отражение для доступа к открытым полям введенного объекта. Использование этого метода в WebView, содержащем ненадежный контент, может позволить злоумышленнику манипулировать хост-приложением непреднамеренными способами, выполняя Java-код с разрешениями хост-приложения. Будьте предельно осторожны при использовании этого метода в WebView, который может содержать ненадежный контент. JavaScript взаимодействует с объектом Java в личном фоновом потоке этого WebView. Поэтому для обеспечения безопасности потока требуется уход. Поля объекта Java недоступны. Параметры объект Java-объект для ввода в этот контекст JavaScript WebView. Нулевые значения игнорируются. имя, используемое для выставления объекта в JavaScript

Я пользуюсь телефоном, извините за создание. Это цитата из официального сайта android. Итак: Если ваша страница:

  1. Set ID ввода, например, текст (например: < ввод ID = «текст» ...)
  2. Добавьте этот код в конец документа:

    < сценарий> функция a (b) {document.getElementById ("текст (здесь yur ID)"). Value = b;}; функция b (a) {document.getElementById ("текст (вот ваш ID) "). Значение + = a;} </сценарий >

  3. Чтобы изменить текст, используйте этот код:

    String str = "any string"; webview.loadUrl ("JavaScript: а (\" "+ ул +" \ ")");

  4. Чтобы добавить текст в конец:

    Строка Str = "любая строка"; webview.loadUrl ("javascript: b (\" "+ str +" \ ")");

+0

прохладный, спасибо. Но сайт не мой. Не могу я ввести текст без изменения сайта? – user2332887

+0

Да, вы можете. Но можете ли вы дать мне код или URL? Вы также можете получить все входы и проверить, какое редактирование. – barwnikk

+0

это математический форум (немецкий), и я хочу иметь горизонтальную полосу прокрутки в верхней части экрана (с кнопками изображения), где пользователь может вводить операторы mathematik (+, *, -...), не меняя вторая часть клавиатуры. Я использую клиент android.webkit.WebView. Веб-сайт [www.gute-mathe-fragen.de] (http://www.gute-mathe-fragen.de). Поскольку символ также является кнопкой на клавиатуре, возможно, я смогу имитировать нажатие на клавиатуру? Что вы имеете в виду, когда получаете входные данные и проверяете, какое редактирование. – user2332887