Writing files in air for android

I'm trying to create a user license agreement that will show the first time a player opens my game. I'm using a FileStream with a complete event and an IOEvent. The IOEvent is triggered the first time because the file I'm looking for doesn't exist. I then show the user agreement and write the file to the application storage directory. If I then close the game and open it a second time I expect the Complete event to fire since the file now exists but instead the IOEvent is firing again. Why isn't it finding the file and triggering the complete event? I can read the file after I create it so I know it exists at that point.
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.utils.ByteArray;
//load ula file
var file:File = File.applicationStorageDirectory;
file.resolvePath("version.txt");
var version:String = "1.0";
var stream:FileStream = new FileStream();
stream.addEventListener(Event.COMPLETE, checkVersion);
stream.addEventListener(IOErrorEvent.IO_ERROR, noVersion);
stream.openAsync(file,FileMode.UPDATE);
function checkVersion(e:Event):void{
        testText.text += "found file";
        stream.removeEventListener(Event.COMPLETE, checkVersion);
        stream.removeEventListener(IOErrorEvent.IO_ERROR, noVersion);
        var ver:String = e.target.readUTFBytes(e.target.bytesAvailable);
        if(ver == version.toString()){
                stream.close();
                file = null;
                stream = null;
                testText.text += "goto splash screen";
                //gotoAndStop("SplashScreen");
        else{
                stream.writeUTFBytes(String(version));
                stream.close();
                file = null;
                stream = null;
                testText.text += "wrong version number";
                //ula.testText.text = "writing file version = "+version;
                //ula.visible = true;
function noVersion(e:IOErrorEvent):void{
        stream.removeEventListener(Event.COMPLETE, checkVersion);
        stream.removeEventListener(IOErrorEvent.IO_ERROR, noVersion);
        testText.text += "file doesn't exist error = "+e.text;
        stream.close();
        file = null;
        stream = null;
        var file2:File = File.applicationStorageDirectory.resolvePath("version.txt");
        var stream2:FileStream = new FileStream();
        stream2.open(file2, FileMode.WRITE);
        stream2.writeUTFBytes(version);
        stream2.close();
        file2 = null;
        stream2 = null;
        testText.text += "   created file";
 }

I use this
var f:File= new File(File.documentsDirectory.resolvePath("RunBit.csv").url);
    if (!f.exists) {
        //Create file
CHECK THE PERMISSIONS

Similar Messages

  • Help - Loading Remote XML/PHP File On AIR For Android

    Hi guys
    Just a quick question here. I'm developing an android app which requires a small amount of text data to be retrieved via a remotely hosted on a web server.
    It works fine on a desktop machine but when it comes to testing it on a cellphone it refuses to load the XML file.
    The data file I'm using is a simple XML file for now, but eventually it will be replaced with a PHP file which generates XML.
    I'm uisng Adobe Flash Pro CS6 and have set the target to AIR 3.4 for Android. The INTERNET setting on the android permissions has been checked.
    The code is a simple URLLoader as follows:
    ============================
    private var _appDataXML:XML;
    private var _xmlLoader = new URLLoader();
    _xmlLoader.addEventListener(Event.COMPLETE, _onXMLLoaded, false, 0, true);
    _xmlLoader.load(new URLRequest("http://www.example.com/data.xml"));
    private function _onXMLLoaded(e:Event):void
         _appDataXML = new XML(e.target.data);
         _xmlLoader.removeEventListener(Event.COMPLETE, _onXMLLoaded);
    ============================
    Is there any reason why this works on a desktop but fails to work when tested on a cellphone? Could I have missed something?
    Any help would be appreciated. Thanks!

    Thanks for the response. I did as you asked and looked at the internet permissions which by the
    way was already checked.
    I then managed to solve this issue in a very bizarre way. I originally wrote the app in Flash CS5.
    I recently purchased a subscription to Flash CS6 and after recompiling under CS6 it still exhibited
    the same behaviour. But when I unchecked and then rechecked the internet permissions the app
    somehow fixed itself and is now working.
    Not sure what's going on here but it all seems OK now. Thanks!

  • How can I use a file in flash cs6 that I made in flash cs5.5 air for android

    I have made an app in in air for android in flash cs5.5 air for android, and I want to edit it in cs6 and play it in cs6.
    But if I put Ctrl+Enter I got an error: createWin process failed with error 2: system couldn't find the file. I think the problem is that I'am using air for android 2.6 version in flash cs5.5 and version 3.2 in flash cs6. I have searched the web and found out that you can add older air versions using the sdk manager and I have tried it but first I get the error that the version of the sdk I am trying to install is not valid and after some files that I added to the sdk folder I get this error:Only SDK higher than version 3.4.2540 may be added.
    I there a possible way to update the air for android for an fla or apk? Or how can I let my originally file work fine in flash cs6??

    system couldn't find the file
    If you can´t get a more specific hint why your project can´t compile then I can think of some reasons theis error might occur
    1.You had files included besides the swf, like videos, audio files, xml files, that are not present in the place air expects them to be
    2.somewhere in your createWin functions there is a class import needed that isn`t present in 3.2 anymore, for example some classes or functions from classes that were valid in 2.6 are not any more in 3.2
    3. to achieve better eror logging, allow for debugging in the publishing options and see what specific lines in your code throw the error
    4.any air app needs a cert file, this needs to be created once, if you migrated to e new system it might be you never created that file which air expects to even begin the compiling process
    once you isolate the problem, report back

  • Can you play/view swf files on adobe air for android?

    Hi, yes; I'm new here, as well as to Adobe Air, and I'm still trying to learn the ropes around here, and I apologize in advance if this has already been asked, or I have placed this question in the wrong forum.
    The thing is, I was wondering if it was possible to play my SWF files via adobe air for android; and if so, how? Thanks in advance either way.

    Can you please give directions where can i clear that cash.
    Anyway i don`t think its the case, because this is first time i hooked phone to internet, and first time i launched Android app store.
    Edit:
    I went to https://market.android.com and there is Adobe air app. But when i try to download it says that my device doesn't support it (Samsung Galaxy GT-I5500) By default it comes with android 2.1 and doesn't support Adobe air, but i upgraded firmware to 2.2.
    Maybe that is the reason it doesn't show me Adobe AIR in app store - based on my phone, not my Android version ?

  • The Error Message 'Application descriptor file cannot be parsed' shows when compiling (Ctrl + Enter) Adobe AIR for Android applications on Flash Professional CS5.5

    The Error Message 'Application descriptor file cannot be parsed' shows when compiling (Ctrl + Enter) Adobe AIR for Android applications on Flash Professional CS5.5
    This is happening for most of the pupils and staff at our school and they are unable to complete their work.
    This also happens on a fresh copy of windows and CS5.5 without any updates and also with all latest updates.
    I have tried it on 32-bit and 64-bit CS5, Windows, Air and Java with the same error every time.
    There are a small minority of users where this works fine for them with no issue.
    I have tried re-setting user profiles.
    I have tried a local admin and domain admin account with the same issue
    I have noticed however that if the file is moved to the shared area it will compile. If it is on their documents area it will not compile. The users have full control in both locations. This is fine for staff but we are unable to give full control or modify access to the shared area for the pupil's
    I have been through the online support section and it directed me to phone Adobe Customer care who informed me that all support has been discontinued for CS5, CS5.5 and CS6 and they will only support creative cloud.
    Any ideas what to try next? There is no other information about this error and I cannot work out what is causing it.

    I have tried and  able to package an apk using your XML file.Could you please make sure your XML file starting from line 1 and coloumn 0.Any space will results in the error (Application Descriptor file cannot be parsed)
    -Pranali

  • Air For Android - Full Screen not working

    Opened CS5.5 > Chose "Air For Android" which gave me a stage dimension of 480x800 default. I then created my app.
    I am using a Droid Bionic and testing my app on it. It will not go to full screen, regardless of how I am holding the Droid. When publishing, I clicked "Full Screen" and Portrait, Landscape, Auto Orientation, etc. I tried all of the publishing options, yet still there is white screen on the eastern and southern side of the screen.
    I have a picture on the main screen, and it fits perfectly within the 480x800 dimmensions when playing in Flash. After publishing to an APK file and testing it on Droid, I have that white space as mentioned, as if the stage size grew larger than the picture / app. I also shrank the stage(480x800) dimensions to to (340x600) , but still the same amount of white space. When I move the picture to the right a bit, and publish, it shows the white space on the left hand side of the stage. This can only mean that when I publish, the stage size grows but everything on the stage stays the same. 
    Any ideas?
    Thanks!

    I removed:
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;
    from AS3 and it works better. Now there is even white space on the north and south side of the screen. Clicking "Full Screen" in the publish settings, makes a little more white space, which is weird. It as if now the stage is expanding its height, rather than its height and width due to me using the above code. Still, would like to get rid of that extra white space.
    Edit: It looks like the stage height grew by 60. If I expand the picture by 60, placing it on the stage at 0x and -30y, it fits fine on the bionic. I don't understand why this is happening, and scared that it may be different for each device.

  • Best practice for images. Air for Android

    Hey guys...
    I was thinking about the best solution when it comes to images storage for Air on Android.
    Since I dont have much experience with non-web based apps, I thought of two way and I would like to know your thought on them.
    1.Application Storage Directory. If I get it right, this folder is created when the app is installed and the project can access files in it. Any idea on how this can work with images?
    2.Database. My app uses a local database anyway so maybe that the proper way to do it. I've done some research and found out that the image must be converted to a byte array (thats easy) but then I dont have a clue on how to save it to the database.
    So? Which one is better for the mobile world?
    Also, if there are other ways let me know please.

    While I am no expert in this area, I did run across this blog:
    http://www.remotesynthesis.com/post.cfm/local-caching-of-remote-images-in-air-for-android
    It deal with local caching of remotely loaded images.  Should be exactly what you are looking for.
    Darren

  • AudioPlaybackMode.Voice on Air for Android

    Im developing an Air for Android App using Air 17 that is basically a VOIP phone. Im trying to get the Audio to come through the earpiece using the following code: SoundMixer.audioPlaybackMode = AudioPlaybackMode.VOICE; SoundMixer.useSpeakerphoneForVoice = false;
    It seems to work until I start talking into the built in Mic from my android device, the audio just stops functioning all together. I tested the AudioPlaybackMode.Voice on another simple app I made where it just plays a sound file and it works perfectly.
    Can anyone provide me with some insight of why this is happening or give me any advice on how to debug this issue? Thanks

    Make sure that were your tutorial code uses startDrag() /stopDrag()
    that you use: startTouchDrag()/stopTouchDrag()

  • Adobe Air for Android - caching key event that have "unusual" keycode

    I am developing an application for a platform. The OS of this platform is Android Gingerbread (2.3.4) The platform has some buttons with "unusual" key code: 141, 131 etc.
    Native application that created in ADT can catch and respond to these keyboard events While my Adobe AIR application (created in Flash professional) are Indifferent to them.
    I try both: stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyHandler,false,0,true); NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN,KeyHandler,fa lse,0,true);
    How can I "catch" this event? Maybe a way to add constant to the keyboard class?
    Thanks

    If you are deploying for iPhone it is on the 'general' settings(First setting page opened).
    Just noticed you are making android app but i still added iphone deployment settings for further future
    But if you are using it for flash/android you have to add code into your fla descriptor with XML language(dont worry it is 1 line of code)
    Watch the video on this page about GPU rendering:
    http://blogs.adobe.com/cantrell/archives/2010/10/gpu-rendering-in-adobe-air-for-android.ht ml
    Your app shouldn't lag after these steps but if you have a project that gets bigger and has lots of code it MIGHT lag so that is when external files should help.

  • Air for Android Extremely Slow...

    Hey everybody,
    Hopefully some of you have been trying the prerelease of Air for Android like myself. Its all great and easy peasy to export the apps to my phone but it seems to be ridiculously slow even for seemingly simple scripts.
    This is what i'm trying to run at the moment and the app times out before it gets running (All the apps do get running eventually but only after the time out timer could have run over multiple times).
    import flash.display.Shape;
    import flash.events.Event;
    import flash.sensors.Accelerometer;
    import flash.events.AccelerometerEvent;
    var vx:Number = 0;
    var vy:Number = 0;
    var s:Shape = new Shape;
    s.x = stage.stageWidth/2;
    s.y = stage.stageHeight/2;
    with (s.graphics)
        lineStyle(3,0);
        drawCircle(0,0,5);
    addChild(s);
    var accel:Accelerometer = new Accelerometer();
    addEventListener(Event.ENTER_FRAME, onFrameLoop);
    accel.addEventListener(AccelerometerEvent.UPDATE, onAccelEvent);
    function onAccelEvent (evt:AccelerometerEvent):void
        vx += evt.accelerationX;
        vy += evt.accelerationY;
    function onFrameLoop (evt:Event):void
        s.x = Math.round(s.x + vx);
        s.y = Math.round(s.y + vy);
    From what I can see theres nothing actually wrong with the code from what I can see but it just takes so frickin' long to load. If I make an app with some equally simple animations it loads almost instantly. I am aware that this is only a prerelease version of the software and the documentation does say that hardware acceleration has not been added yet but whenever I watch the videos up on youtube of the Adobe team making amazing apps with obviously buckets of script running smoothly on their phone I get annoyed
    P.S The processor on my phone isn't the problem either (Nexus One Eclair )

    If you are deploying for iPhone it is on the 'general' settings(First setting page opened).
    Just noticed you are making android app but i still added iphone deployment settings for further future
    But if you are using it for flash/android you have to add code into your fla descriptor with XML language(dont worry it is 1 line of code)
    Watch the video on this page about GPU rendering:
    http://blogs.adobe.com/cantrell/archives/2010/10/gpu-rendering-in-adobe-air-for-android.ht ml
    Your app shouldn't lag after these steps but if you have a project that gets bigger and has lots of code it MIGHT lag so that is when external files should help.

  • Google Maps for Flash in AIR for Android: ~2 minutes to start up

    I have a "Hello World" style AIR for Android app using Flash Builder 4 Burrito/Flex Hero.
    When debugging on device (stock HTC Desire) using Flex version v1.20 of Google Maps for Flash (map_flex_1_20.swc), it takes 1 minute and 50 seconds for the app to startup to display a simple map:Map3D on the home screen. The same app without the map:Map3D object starts in just a few seconds.
    There are no startup delays using the simulator.
    Anyone know what might be causing the severe startup delay when running on device?
    Thanks,
    Stephen

    Hi - yes no problem: I've uploaded a sample app here: http://crackedfrog.com/files/AndroidAIRMap.zip.
    You'll need to add a valid Google Maps API key and corresponding URL back into the maps:Map3D object:
    <maps:Map3D left="0" right="0" top="0" bottom="0"
      xmlns:maps="com.google.maps.*" id="map"
      url=""
      key=""
      sensor="false"/>
    This shows the same behaviour as described above - around 2 minutes to start up when debugging on the device.
    Appreciate any help.
    Thanks,
    Stephen

  • Flash cs5.5 FLVplayback Encoding Problems with Air for Android

    Dear All,
    I'm trying to play flv in my air application by using FLV playback in flash cs5.5.
    I can play flv in the pc but not on the samsung galaxy tab andriod platform.
    if anyone out there has tried out FLV playback with either an Air For Android application, where the FLV files are packaged within the app, or either streaming via normal http//:, any help  would be greatly appreciated.
    Thanks!

    First disable autoplay. It gave errors for me. Try to make the movie play with the play() command.
    to embed the movie in your air bundle, just go to publish settings for your flash project. Then in that screen go to the player settings.
    In the first GENERAL tab you'll see a the bottom that you can add files to your project
    Propably there is allready your .swf and an .xml file in there.
    Using the + icon you can add your video.
    Make sure that your video is in the same directory as your . FLA file and you can use it as is (by name)
    If for example your flashfile is in c:\mytest\mytest.fla and the video in c:\mytest\videos\myvideo.flv , then you will have to load your video as "videos/myvideo.flv" with a FORWARD slash, never use \
    Good luck

  • AIR for Android Captive Runtime

    Is it possible to package android apps with AIR (or will it be) using Flash CS5.5? I don't see anything on the web about. Just how to do it with Flex and ADT etc...

    Hi,
    I've made a complete working example for publishing an application with captive runtime, assets and native extensions starting from Flash CS5.5
    I was able to make it thanks to hints and suggestions I found in this thread.
    Note: english is not my native tongue so I hope you understand what I've written also if sometime it sounds "engrish".
    Here it is the link to the zip file:
        http://www.genereavventura.com/hosted/Air3NativeExtensions/AirVibrate.zip
    Requirements:
    - You must have Flash cs5.5 pro (obviously)
    - You must have installed the overlay for Air3.0 sdk on your Flash cs5.5 pro
    Here it is a link that explain how to accomplish it: http://forums.adobe.com/message/3939712
    Here the steps I made.
    1) Open Flash CS5.5 and create a new AIR for Android application
    2) Add the swc to the libraries used by your FLA (open Actionscript 3.0 settings and add "VibrationActionScriptLibrary.swc")
       Btw, you can find this "ready to use" native extension inside the zipfile that you can download from here: http://www.adobe.com/devnet/air/native-extensions-for-air/extensions/vibration.html
       However in my example you will find also a directory named "extension" that contains it.
    3) Open and then close the "air for android settings": by doing this Flash will create yourapp-app.xml file in the directory where your FLA resides.
       For example my fla is named "vibrate.fla" so Flash created for me a "vibrate-app.xml" file.
    4) Make a copy of this "vibrate-app.xml" file by naming it "real-vibrate-app.xml" (or choose whatever name you want)
       I've done this because after modyfing the original one by adding the <extension> tag (see below) I wasn't able to test my app from within Flash IDE (when I compile it it simply doesn't start)
       Instead by doing this all worked fine.
    5) Edit the "real-vibrate-app.xml" file by adding somewhere these lines (I added it just before the <initialWindow> tag)
        <extensions>
          <extensionID>com.adobe.Vibration</extensionID>
        </extensions>
    6) Add <uses-permission android:name="android.permission.VIBRATE"/> in the <android> <manifestAdditions> part in "real-vibrate-app.xml" file.
       You should do something like this:
       <android>
          <manifestAdditions>
            <![CDATA[<manifest>
              <uses-permission android:name="android.permission.VIBRATE"/>
            </manifest>]]>
          </manifestAdditions>
       </android>
    7) Develop your application
       I made a simple one that loads an external jpg and shows it on the stage: then the user can tap on it to make the phone vibrate.
       The function "doVibration" is called only when the app is running on Android Device so I do not get any executions error when I run the app from within Flash Ide
    8) Publish and test it to your USB connected device by launching the "publish.bat" file I have created
       Open a dos prompt and move to your project directory then type publish.bat and press enter.
       Note: it can be that you have to edit the bat file in order to change the path to the ADT tool that comes with Air3.0 sdk
       It should be in [your adobe flash cs5.5 directory]\AIR2.6\bin\adt (rememeber, you must have installed the Air3.0 sdk overlying the old Air2.6/2.7 in the AIR2.6 directory)
       Inside the bat file you can change easily the target type (captive or not) simply by commenting/decommenting the right line.
       Captive version is about 8Mb more than the normal one but the big deal is that the user that installs it do not need the air runtime installed on his phone!
       The "big line" that creates the package is the following one:
       call %ADT_LINK% -package -target %TARGET_TYPE% -storetype pkcs12 -keystore certificate/vibrate.p12 -storepass android AirVibrate.apk real-vibrate-app.xml -extdir extensions vibrate.swf icons assets
       where:
       call %ADT_LINK%          it's just the path to the ADT tool
       -package                 it's the command that we want ADT to execute
       -target %TARGET_TYPE%    captive/non captive version
       -storetype pkcs12        certificate related
       -keystore certificate/vibrate.p12  path to your self signed certificate
       -storepass android       certificate related, I created the example certificate with "android" password and this parameters tell ADT to always use it without prompting
       AirVibrate.apk           the name of the Apk
       real-vibrate-app.xml     the apk-xml to use that is the one we modified manually above
       -extdir extensions       it's the path to the directory that contains the native extension
       vibrate.swf              the main swf
       icons                    the icons directory
       assets                   the assets directory (where I put the external jpg)
    That's all.
    If everything is correct, the batch file creates the AirVibrate.apk then installs it on your attached usb device and run it.
    When you tap over the Android image that will appear, your phone should vibrate.
    Now.. does someone wants to develop a Native Extension to show Admob banners in our Android Air Applications?
    If I missed something, please let me know.
    Thanks

  • Issue with Amazon and AIR for Android

    It appears that Flash Pro CS5.5 does not create .apks properly for the Amazon Appstore. The airDownloadURL is incorrect according to Amazon and your app will likely be rejected if you try to submit it to them. In the AIR for Android Settings, when you choose "Get AIR runtime from: Amazon Appstore" in the Deployment tab, the link Flash Pro uses for the airDownloadURL property is:
    http://www.amazon.com/gp/mas/dl/android/com.adobe.air
    when it should be this:
    http://www.amazon.com/gp/mas/dl/android?p=com.adobe.air
    As far as I can tell, there is no way to edit this within Flash CS5.5 so Adobe needs to make the change in a future update. The only way I know of around this is to create your .apk manually through the command line using the AIR SDK. It should look something like this:
    adt -package -target apk -airDownloadURL http://www.amazon.com/gp/mas/dl/android?p=com.adobe.air -storetype pkcs12 -keystore certificate.p12 filename.apk filename-app.xml filename.swf icon36.png icon48.png icon72.png
    If you don't have any experience using the AIR SDK then do some searching online. There are a ton of good resources out there.
    Good luck!
    tomdei

    For me works editing of Markets.xml file at:
    "C:\Program Files\Adobe\Adobe Flash CS5.5\en_US\Configuration\Android\Markets.xml"
    and replacing of Amazon Appstore key to
    <market name="Amazon Appstore" url="http://www.amazon.com/gp/mas/dl/android?p=com.adobe.air"/>
    That's all!

  • Using Google Play Developer License RSA code with Air for Android App?

    What is the procedure for using Google Play Developer's provided license code (Base64-encoded RSA public key to include in your binary) for an Air for Android app in Flash?
    I see the need to load a p12 file and have gone through the process of creating one for Air for iOS with OpenSSL but the Google provided key is in a different format. To start with it is delivered by copy/paste off a webpage.
    I am using Flash CS5.5. I could switch to CS6 if neccesary.
    Thanks

    Follow this link, see post number 12.
    http://forums.adobe.com/thread/1115438

Maybe you are looking for