问题访问apk文件中的本地xml文件 - Air for Android

时间:2012-08-16 12:06:15

标签: android flash air

这是我第一次真正开始使用Air for Android,如果已经涵盖了这个问题,请原谅我。如果有,那我就找不到了。

所以我有一个加载和显示xml数据的应用程序。 在应用程序中,我有代码检查wiFi或等效物是否可用,如果是,则拉实时xml文件,如果没有,则拉出随应用程序打包的本地xml文件。 如果我从实时网址中提取xml,那么该应用程序可以正常运行,但如果从本地提取,则无法运行。

在做了一些研究后,我发现当拉入本地文件时,Air for Android的工作方式略有不同。所以我需要解析应用程序目录。 我这样做了,但仍然没有快乐。

经过一番研究后,我读了一些帖子说我应该使用fileStream() 试过这个,仍然是虚无::(

在Flash IDE中进行测试时,它一直按预期工作。

如果我还有剩余的头发,我现在就把它拉出来! 本地xml文件在“includes”

中设置

以下示例代码用于测试

var subURL:String = "xml_feeds/myxmlfile.xml"
var fileStream:FileStream = new FileStream();
var file:File = File.applicationDirectory.resolvePath(subURL);
fileStream.addEventListener(Event.COMPLETE, processXMLData);
fileStream.openAsync(file, FileMode.READ);
MovieClip(parent).txStates.text = file.url+" - TRYING"
var prefsXML:XML = new XML()
function processXMLData(event:Event):void{
    MovieClip(parent).txStates.text = file.url+" - OPEN"
    prefsXML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
    var tempArr:Array = new Array();
    var reportCount:Number = prefsXML.row.column.length()
    for (var i = 0; i < reportCount; i++) {
        var rName:String = prefsXML.row.column[i].@name.toString();
        var rValue:String = prefsXML.row.column[i].toString();
        var rTitle:String = prefsXML.row.column[i].@name.toString()
        tempArr.push([rName, rValue, rTitle]);
    }
    showData()
    fileStream.close();
}

有什么我错过的吗?

更新时间:2012年8月21日 不知道这是怎么回事。这是我现在必须使用的代码,以加载本地xml文件。似乎相当漫长的啰嗦

function listing():void{
var folders:Array = new Array();
folders = File.applicationDirectory.getDirectoryListing();
for(var i:Number =0;i<folders.length;i++){
    if(folders[i].isDirectory){ 
        if(folders[i].name=="xml_feeds"){
            var files:Array = new Array();
            files = folders[i].getDirectoryListing();
            for(var j:Number=0;j<files.length;j++){
                if(files[j].name=="CTSection2.xml"){
                    fileStream.openAsync(files[j], FileMode.READ);
                    fileStream.addEventListener(Event.COMPLETE, processXMLData);
                    fileStream.addEventListener(IOErrorEvent.IO_ERROR, localXMLFailLoad);
                }
            }
        }
    }
}

}

0 个答案:

没有答案