flex - sous - ouvrir une page html avec chrome




Ouvrir un fichier local avec AIR/Flex (4)

J'ai écrit une application AIR qui télécharge des vidéos et des documents à partir d'un serveur. Les vidéos sont lues dans l'application, mais j'aimerais que l'utilisateur puisse ouvrir les documents dans leurs applications natives.

Je suis à la recherche d'un moyen d'inviter l'utilisateur à ouvrir / enregistrer sous un fichier local stocké dans le répertoire de stockage d'applications. J'ai essayé d'utiliser les classes FileReference + URLRequest mais cela génère une exception nécessitant une URL distante.

Mon dernier recours est juste de copier le fichier sur leur bureau: \


Actuellement, Adobe ne supporte pas l'ouverture de fichiers dans les applications par défaut. Le transmettre au navigateur semble être le seul moyen de le faire fonctionner.

Vous pouvez cependant utiliser un FileStream et écrire un petit fichier html avec du javascript qui définit l'emplacement d'un iframe dans le fichier, puis après 100ms ou plus, appelle window.close (). Ensuite, ouvrez ce fichier dans le navigateur.


Seulement la façon dont je pourrais comprendre comment le faire sans juste déplacer le fichier et dire à l'utilisateur était de le transmettre au navigateur.

navigateToURL(new URLRequest(File.applicationStorageDirectory.nativePath + "/courses/" + fileName));

Vous pouvez utiliser le nouveau openWithDefaultApplication(); fonction qui est disponible sur la classe File (je crois que c'est seulement disponible dans AIR 2)

par exemple:

var file:File = File.desktopDirectory.resolvePath(fileLocation);
file.openWithDefaultApplication();

Pour moi, c'est:

var request:URLRequest = new URLRequest();
request.url = file.url;
navigateToURL(request, "_blank");

Le navigateToURL(file.nativePath) ne fonctionnait pas car le chemin "/ users / mydirectory / ..." se trouvait en dehors du sandbox de l' application . AIR autorise uniquement l'ouverture de certains protocoles avec navigateToURL() .