首页 > 解决方案 > 将数据从 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错误地包装了该值,但是以我现在拥有的方式使用它根本不会修改文本输入。

标签: javascriptjavaandroidstringandroid-studio

解决方案


在用户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+"';})();");

推荐阅读