:::: 菜单 ::::

AIR的URL方案

今天FLEX群里有个兄弟提起AIR缓存清除,我又去官方文档转悠了圈,顺便看到AIR的URL方案,有两个没用过的app:app-storage:
详细情况:

下面的标准URL方案是可以在AIR的任何安全沙箱中都支持的:
http:https: 这两个当然就是网页URL
file: 这个当然就是本地文件URL

下面的方案用于运行在应用程序安全沙箱的内容:
app:
使用这个可以指定相对于应用程序安装目录(也就是应用程序源目录)的顶级(就是包含应用描述文件的目录)的路径。比如下面这个就是指向应用程序顶级目录下的resources子目录:
app:/resources
在ADL应用程序中运行时,应用程序源目录为放置应用描述文件的目录。
app-storage:
指定相对于应用程序存储目录的路径。AIR为每个用户定义一个唯一应用程序存储目录,该目录用于存放应用程序的设置信息。该目录地址取决于 用户名、AIR应用ID(application ID)和发布者ID(publisher ID)

具体讲,对windows来说在user name/Application Data/applicationID.publisherID/Local Store/
比如C:DOCUMENTS AND SETTINGSBABBAGEAPPLICATION DATACOM.EXAMPLE.TESTAPP.02D88EEED35F84C264A183921344EEA353A629FD.1LOCAL STORE

对Mac OS来说在/Users/user name/Library/Preferences/applicationID.publisherID/Local Store/
比如/USERS/BABBAGE/LIBRARY/PREFERENCES/COM.EXAMPLE.TESTAPP.02D88EEED35F84C264A183921344EEA353A629FD.1/LOCAL STORE

用File.applicationStorageDirectory创建的文件对象的URL(和url属性)就是app-storage URL方案,像这样:
var dir:File = File.applicationStorageDirectory;
dir = dir.resolvePath("preferences");
trace(dir.url); // 输出:app-storage:/preferences

就像FileStream对象或者Sound对象那样,你可以使用用这些URL方案定义指向N多不同对象URL请求的URLRequest对象。同样可以在运行于AIR的HTML内容中使用这些URL方案;比如,你能把他们用于IMG标签的src属性。
不过,在应用程序安全沙箱的内容中,你只能使用AIR特有的URL方案(app:和app-storage:)

参考文献:http://livedocs.adobe.com/air/1/devappsflash/security_1.html#1043607(AIR安全).
(难免有误,敬请指出.)

延伸阅读