Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android java代码中将字符串存储到文件中,并在javascript中调用它进行解析_Java_Javascript_Android_Jquery_Html - Fatal编程技术网

如何在android java代码中将字符串存储到文件中,并在javascript中调用它进行解析

如何在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

我正在尝试实现一个jQuery移动应用程序,在该应用程序中,我正在解析页面的HTML代码,以便在示例main content inner中使用div id仅查找div的内容。我正在使用JavaScript执行此操作,JavaScript存储在index.html代码中,如下所示:

<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',
这种方法可以奏效