AS3 Air远程外部swf无法访问本地apk

时间:2011-05-04 15:12:31

标签: flash actionscript-3 air

我正在使用flash cs5 air extention开发一个android文件。 我知道基本的跨域策略和服务器到服务器的连接。我搜索了许多页面,但没有解决方案。

我的“container.apk”从服务器加载“external.swf”。我希望能够从“external.swf”到达“container.apk”中的变量和函数。  但我无法从我的外部模块swf(远程文件)到我的容器(应用程序文件.apk)上的任何功能..我的意思是,我正试图从加载的swf到达container.apk的函数。 就像点击“external.swf”按钮时一样,它应该影响“container.apk”中的一个功能。

此处还有一些我正在获取的错误代码;

SecurityError:错误#2047:安全沙箱违规:父:http:// * * .com / external.swf无法访问应用:/container.swf* *

我的容器的加载功能;

var l:Loader = new Loader;
var externalSWF:MovieClip;
var contextC:LoaderContext = new LoaderContext(); 
contextC.checkPolicyFile = false;
contextC.allowCodeImport = true;
l.load(new URLRequest(filePath), contextC);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);


function loadComplete(evt:Event){
    l.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadComplete);
    externalSWF = l.content as MovieClip;
    MovieClip(root).addChild(externalSWF);
}

1 个答案:

答案 0 :(得分:0)

我认为这是设计的,加载的SWF是沙箱。

想象一下您拥有Flash网站并希望加载Flash游戏的场景。如果加载的子级访问父级,则恶意SWF可以通过加载器SWF获取服务器访问权限。

通过访问APK及其权限,您尝试做的事情更加危险也无济于事,加载的SWF理论上可以接管电话。

然而,它应该反过来工作,加载器主机应该能够访问加载的SWF中的任何内容,所以我担心你必须考虑到这一点来构建你的应用程序。