Cuando Adobe decidió escuchar a los principales desarrolladores o agencias sobre que les gustaría implementar en la nueva versión de Adobe AIR, muchos de ellos querían abrir archivos externos logrando con esto un gran abanico de posibilidades. Con la nueva versión de Adobe AIR 2.0 se puede seleccionar un archivo y abrirlo con su aplicación por defecto, si este archivo no tiene asignado una aplicación con cual poder abrir, mostrará un error. Por otro lado, no puedes acceder a este archivo para manipularlo ya que te saldrá un mensaje de Seguridad (por lo menos no con File, lo veremos en otro tip).
Como ya explicamos en el tip anterior, debemos usar Flash Builder(FB) o eclipse (con el SDK de flex), sumado a esto tenemos que tener el SDK de AIR 2.0.
Vamos a crear un boton en FB para que nos dispare una función:
Código :
<s:Button id="btn" label="Open File" click="openNewFile()" />
La función nos abrirá el browser para poder seleccionar el archivo que deseamos:
Código :
private var $__file:File; private function openNewFile():void{ $__file = new File(); $__file.addEventListener(Event.SELECT, fileSelected, false, 0, true); $__file.browseForOpen("Buscar archivo a abrir!!"); //con esto también podemos poner un título a la ventana que abrirá }
Nuestro evento Event.SELECT será ejecutado cuando ya tengamos aceptado el archivo que seleccionamos.
Código :
private function fileSelected(e:Event):void{ try { //aquí la magia $__file.openWithDefaultApplication(); } catch(error:Error) { trace("Problemas con el archivo a abrir"); } }
Y listo, con esto podemos probar y ver que logramos abrir un .PSD en Photoshop o un .DOC en Word, siempre y cuando estas apicaciones sean "por defecto".
Aquí el código completo
Código :
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="356" height="183"> <fx:Script> <![CDATA[ private var $__file:File; private function openNewFile():void{ $__file = new File(); $__file.addEventListener(Event.SELECT, fileSelected, false, 0, true); $__file.browseForOpen("Buscar archivo a abrir!!"); } private function fileSelected(e:Event):void{ try { $__file.openWithDefaultApplication(); } catch(error:Error) { trace("Problemas con el archivo a abrir"); } } ]]> </fx:Script> <s:Button id="btn" label="Open File" click="openNewFile()" horizontalCenter="0" verticalCenter="0"/> </s:WindowedApplication>
Descarga la aplicación aquí
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Zguillez el 23 de Febrero de 2010
Por Freddie el 23 de Febrero de 2010
Está bastante sencillo y se me hace un movimiento muy lógico. Abrir archivos con la aplicación nativa. ¿Esto funciona de alguna manera similar en el mundo móvil? ¿Esta API está soportada en 10.1 para móviles?
Por eldervaz el 23 de Febrero de 2010
Por Gz.Francisco el 23 de Febrero de 2010
Muy buen tip.
Por Zandy el 23 de Febrero de 2010
Por MaoAizaga el 23 de Febrero de 2010
saludos
Por annieruci el 02 de Mayo de 2010
Por Gaston el 16 de Julio de 2010
Error #1069: Property openWithDefaultApplication not found on flash.filesystem.File and there is no default value.
No se si precisa una libreria especial o que, no veo ningun import en el codigo que pusiste ahi, asi que no entiendo.
Muchas gracias por el aporte.
Por nano el 16 de Agosto de 2010
GRACIAS