android - 将数据传递到android webView中的本地html文件
问题描述
尝试将数据传递到我的 html 文件时遇到一些困难。我的 html 文件位于 assets 文件夹内的项目根目录中。简而言之,我在 webView 中显示我的 html 文件。
这是我的 mainActivity.kt 的一部分,用于填充我的 webView
mWebView = findViewById(R.id.activity_main_webview);
val webSettings = mWebView.settings
webSettings.javaScriptEnabled = true
mWebView.loadUrl("file:///android_asset/googlechart.html");
这是我的 googlechart.html 的一部分,它本地存储在 assets 文件夹中
var dataRow = [["mushroom", 1], ["fish", 3]]
var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows(dataRow);
我想将数据从 mainActivity.kt 传递到我的 googlechart.html,根据Passing data from java class to Web View html中的回答,它没有解释如何将数据传递到存储在项目根目录中的 html 文件。我怎样才能做到这一点?
任何帮助或见解表示赞赏。
解决方案
简单的解决方案
- 何时使用查询
loadUrl()
- 进去
document.location.href
_script
- 处理你的数据
- 解码字符串、拆分等
例子
如果数据是 json
安卓
val json = JsonObject().apply {
addProperty("age","28")
addProperty("name","john")
addProperty("contents","test")
}
val url = "file:///android_asset/test.html?$json"
binding.webView.loadUrl(url)
当地的.html
<!DOCTYPE html>
<html>
<body>
<H1>test</H1>
<oi id="list">
</oi>
<script type="text/javascript">
function makeList() {
const getOiTag = document.getElementById("list");
const decodeUrl = decodeURI(document.location.href);
const jsonStr = decodeUrl.split("?")[1];
const json = JSON.parse(jsonStr);
for(i in json){
const li = document.createElement("li")
li.textContent = i + " : " + json[i];
getOiTag.appendChild(li);
}
}
makeList()
</script>
</body>
</html>
推荐阅读
- javascript - 如何在 DataTables 插件中添加编辑按钮?
- javascript - 如何将数据分离到同一个 Excel 文件中的新工作表中
- matlab - 如何在代码中使用嵌套 for 循环和 if else 使其更小
- android - 如何在 Android Auto 的媒体浏览器中更新默认错误文本?
- apache-spark - 合并多个 Rocksdb 数据库
- filter - OBIEE 中有 0 行的必填选项字段
- angular - 在不使用 ngModel 的情况下单击按钮时从文本区域获取输入值
- reactjs - React-Native-AsyncStorage 保存整数项
- angular - 如何在Angular中显示多维数组
- javascript - 如何在 d3.js 地图中显示连接线('错误:
属性 d:预期数字)