我正在使用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);
}
答案 0 :(得分:0)
我认为这是设计的,加载的SWF是沙箱。
想象一下您拥有Flash网站并希望加载Flash游戏的场景。如果加载的子级访问父级,则恶意SWF可以通过加载器SWF获取服务器访问权限。
通过访问APK及其权限,您尝试做的事情更加危险也无济于事,加载的SWF理论上可以接管电话。
然而,它应该反过来工作,加载器主机应该能够访问加载的SWF中的任何内容,所以我担心你必须考虑到这一点来构建你的应用程序。