javascript - 将数据从 Native Activity 传递到 WebView
问题描述
我正在尝试使用我的 Native Activity 中的 Intent 传递一个字符串,并在我的 WebActivity 类中检索它,如下所示:
final String username = getIntent().getStringExtra("USERNAME");
之后,我试图调用一个 Javascript 函数,该函数将使用 DOM 操作将text
输入的username
值更改为 Intent 中的值。我的问题是:
这有效(硬编码值称为“测试”):
myWebView.loadUrl("javascript:(function(){document.getElementById('username').value = 'test';})();");
这不是(试图将其设置为我的意图值):
myWebView.loadUrl("javascript:(function(){document.getElementById('username').value = "+username+";})();");
我假设我可能username
错误地包装了该值,但是以我现在拥有的方式使用它根本不会修改文本输入。
解决方案
在用户Mike M的帮助下,我发现自己犯了两个错误:
- 错误地放置了额外的
- 缺少单引号
Intent myWebIntent = new Intent(MainActivity.this, MyWebActivity.class);
myWebIntent.putExtra("USERNAME", s); // this line needs to go before startActivity()
startActivity(battleShipIntent);
该username
值应该用单引号括起来,如下所示:
myWebView.loadUrl("javascript:(function(){document.getElementById('username').value = '"+username+"';})();");
推荐阅读
- knex.js - 否定查询生成器中现有的 knex where 子句
- sql-server - 日志文件没有缩小
- spring - Spring Initializr 生成的 pom.xml 中的错误
- android - 给定特定位置(不是我们的位置)的分类搜索(如餐馆、医院等)
- emacs - 不可见文本的变量定义
- gatsby - 如何设置背景大小:包含在 Gatsbys 插件“gatsby-remark-images”中
- sql - SQL基于con将行提取到列中
- swift - 如何在金属上使用 Model I/O 框架加载 3d 资产 (.obj) 文件
- r - 按列分组并折叠所有其他没有 NA 的列
- azure - 我想在自动化帐户上创建一个运行手册,其中已经通过 arm 连接到它