我为android编写了一个应用程序。有一个 Webview,我想在我的应用程序上单击一个按钮后将 Text 放入网站上的焦点 TextArea 中。我在谷歌没有找到任何解决方案。
重要的是放在文本中,它不是登录视图,可以通过POST方法传输数据,用户应该能够看到输入。
我希望你能帮助我。
谢谢!
public void addJavascriptInterface (Object object, String name) 在 API 级别 1 中添加 将提供的 Java 对象注入此 WebView。使用提供的名称将该对象注入到主框架的 JavaScript 上下文中。这允许从 JavaScript 访问 Java 对象的方法。对于针对 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 在此 WebView 的私有后台线程上与 Java 对象交互。因此需要注意保持线程安全。Java 对象的字段不可访问。参数 object 要注入此 WebView 的 Java 对象' s JavaScript 上下文。空值被忽略。name 用于在 JavaScript 中公开对象的名称
我正在使用电话,抱歉格式化。这是来自官方页面 android 的引用。所以:如果是你的页面:
添加此文档末尾的代码:
<script>function a(b){document.getElementById("text (这里是你的 ID)").value=b;};function b(a){document.getElementById("text (这里是你的 ID)") .value+=a;}</script>
要更改文本,请使用以下代码:
字符串 str="任何字符串"; webview.loadUrl("javascript:a(\""+str+"\")");
在末尾添加文本:
字符串 str="任何字符串"; webview.loadUrl("javascript:b(\""+str+"\")");