我有html
字符串,我将其加载到webview
。记住html不是文件,它只是一个字符串。
例如,如果我们把我的html字符串改为
String html = "<html>
<head>
<title>business card template-2</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div id="name_text"><font face="verdana" color="#525405">Name</font></div>
<div id="mobile"><font face="verdana" color="#525405">Mobile</font></div>
</body>
</html>"
我正在加载到webView中的这个html字符串。
我正在使用脚本文件动态替换字体标记下的名称,即在上面的html字符串中,我希望用实际名称替换名称,甚至代替具有实际数字的移动。
所以我已将脚本附加到上面的html字符串中,并且应该完成所有替换工作。
例如我连接到html字符串的脚本是
<script type='text/javascript'>var name_text='Rupesh';" var tel_no='XXX-XXX-XX'; </script>
<script type='text/javascript' src='file:///android_asset/js_files/jquery.js'></script>
<script type='text/javascript' src='file:///android_asset/js_files/template.js'></script>
我保存在assets->js_files
文件夹下的template.js和jquery.js文件,因此试图通过提供路径file:///android_asset/js_files/template.js
来访问
在template.js里面,我正在替换它。
当我在PC浏览器中通过提供这两个.js文件的路径时,这很好用。但在Android手机中我无法加载它。是否有替代方案可以替代。
以编程方式我将连接的字符串加载到webview
也就是说,
String html_script = html+script;
webViewCard.getSettings().setJavaScriptEnabled(true);
webViewCard.loadData(html_script,"text/html", "UTF-8");
有人可以帮助我。
更新
我已经为此找到了解决方案,但由于一些限制,我对此并不十分满意。这是下面的解决方案,
我添加了以下代码行
WebSettings settings = webViewCard.getSettings();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setAllowFileAccessFromFileURLs(true);
}
但问题是我必须限制我的应用仅适用于4.2及以上的用户。 有什么我可以做的。
答案 0 :(得分:0)
1.如果您的手机/模拟器在Gingerbread上运行
我自己也遇到过类似的问题。我使用2.3 Gingerbread(API 10)模拟器来测试我的应用程序。我在android forum上发现了更多相关内容。
2.如果您的手机/模拟器在4.2 Jellybeans上运行
来自Android 4.2文档:
警告:如果您已将targetSdkVersion设置为17或更高,则必须 将@JavascriptInterface注释添加到您想要的任何方法 提供您的网页代码(该方法也必须是公开的)。如果你 不提供注释,那么该方法将无法访问 在Android 4.2或更高版本上运行时的网页。