如何在android java代码中将字符串存储到文件中,并在javascript中调用它进行解析
我正在尝试实现一个jQuery移动应用程序,在该应用程序中,我正在解析页面的HTML代码,以便在示例main content inner中使用div id仅查找div的内容。我正在使用JavaScript执行此操作,JavaScript存储在index.html代码中,如下所示:如何在android java代码中将字符串存储到文件中,并在javascript中调用它进行解析,java,javascript,android,jquery,html,Java,Javascript,Android,Jquery,Html,我正在尝试实现一个jQuery移动应用程序,在该应用程序中,我正在解析页面的HTML代码,以便在示例main content inner中使用div id仅查找div的内容。我正在使用JavaScript执行此操作,JavaScript存储在index.html代码中,如下所示: <script type="text/javascript"> window.onload = function() { // var chck = document.getE
<script type="text/javascript">
window.onload = function() {
// var chck = document.getElementById("check");
// alert(chck.title);
$.ajax({
type: 'GET',
url: 'main.html',
dataType: 'html',
success: function(data) {
//cross platform xml object creation from w3schools
try //Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(data);
} catch (e) {
try // Firefox, Mozilla, Opera, etc.
{
parser = new DOMParser();
xmlDoc = parser.parseFromString(data, "text/xml");
} catch (e) {
alert(e.message);
return;
}
}
// var chck = document.getElementById("check");
// alert(chck.title);
var abc = document.getElementById("content1");
abc.innerHTML = (xmlDoc.getElementById("main-content-inner").innerHTML);
// alert(abc.innerHTML);
}
});
</script>
由于jQuery无法调用远程页面同源策略的HTML代码,因此我使用的是java语言代码,我正在android的MainActivity.java上实现该代码,HTML代码以字符串形式返回,比如I
现在,我想将这个I从java传递到index.html中的javascript进行解析。我可以用什么方法来做到这一点。我还想过使用FileWriter将字符串存储在一个文件中,但我不知道如何在javascript中调用这个新文件的路径,在JS的URL中写什么 一种方法是使用,如下所示:
class JavaScriptInterface {
@JavascriptInterface
public String getFileContents(){
// read the file into a String and return it here.
return "the contents of your file";
}
}
然后,要在webview上设置Javascript接口:
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "android");
function getFileContents(){
var info = window.android.getFileContents();
return info;
}
在webview内页面的js中:
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "android");
function getFileContents(){
var info = window.android.getFileContents();
return info;
}
然而,这不是异步的。如果您希望以异步方式实现此功能,您可以改为:
在javascript中添加一个名为populateFileContentsdata的方法
从javascript调用window.android.getFileContents,
如果不返回任何内容,只启动asynctask功能,该功能将读取文件内容,然后在Java android代码中调用webview.loadUrljavascript:populateFileContentsdata;;-这将把文件中的数据传递回javascript,您可以在javascript中随心所欲地使用它。
一种方法是使用一个类似于这样的:
class JavaScriptInterface {
@JavascriptInterface
public String getFileContents(){
// read the file into a String and return it here.
return "the contents of your file";
}
}
然后,要在webview上设置Javascript接口:
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "android");
function getFileContents(){
var info = window.android.getFileContents();
return info;
}
在webview内页面的js中:
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "android");
function getFileContents(){
var info = window.android.getFileContents();
return info;
}
然而,这不是异步的。如果您希望以异步方式实现此功能,您可以改为:
在javascript中添加一个名为populateFileContentsdata的方法
从javascript调用window.android.getFileContents,
如果不返回任何内容,只启动asynctask功能,该功能将读取文件内容,然后在Java android代码中调用webview.loadUrljavascript:populateFileContentsdata;;-这将把文件中的数据传递回javascript,您可以在javascript中随心所欲地使用它。
谢谢星云的回答 然而,我通过四处挖掘解决了我的问题。我使用file writer创建了一个文件,并将其存储在Android内部SD卡的一个文件夹中,比如文件夹名ABC file name XYZ 然后,我使用该文件的绝对地址从javascript调用该文件。文件ABC/XYZ的绝对地址在my JS中写为:
url: 'file:///storage/sdcard0/ABC/XYZ.txt',
这种方法可以奏效 谢谢星云的回答 然而,我通过四处挖掘解决了我的问题。我使用file writer创建了一个文件,并将其存储在Android内部SD卡的一个文件夹中,比如文件夹名ABC file name XYZ 然后,我使用该文件的绝对地址从javascript调用该文件。文件ABC/XYZ的绝对地址在my JS中写为:
url: 'file:///storage/sdcard0/ABC/XYZ.txt',
这种方法可以奏效