2017-01-31 24 views
6

Androidデバイスでブローコードをテストしようとしましたが、テキストフィールドにデータが表示されませんでした。このコードはAIR Desktopでは有効ですが、のAndroidではうまくいきます。 AIR FileStream機能on デスクトップおよびAndroid? Whats best クロスプラットフォームファイルを保存して読み書きするコードですか?Adob​​e AIR Android FileStreamの問題

このコードはAdobe Animate CC Android エミュレータで動作します。正しい方法だ

import flash.filesystem.*; 

      var prefsFile:File; 
      [Bindable] var prefsXML:XML; 
      var stream:FileStream; 

      function appStart():void 
      { 
       prefsFile = File.applicationStorageDirectory; 
       prefsFile = prefsFile.resolvePath("preferences.xml"); 
       readXML(); 
      } 


      function readXML():void 
      { 
       stream = new FileStream(); 
       if (prefsFile.exists) { 
        stream.open(prefsFile, FileMode.READ); 
        processXMLData(); 
       } 
       else 
       { 
        saveData(); 
       } 

      } 


      function processXMLData():void 
      { 
       prefsXML = XML(stream.readUTFBytes(stream.bytesAvailable)); 
       stream.close(); 
       trace(prefsXML.Data1); 
       trace(prefsXML.Data2); 
       trace(prefsXML.Data3); 
       txt_D1.text = prefsXML.Data1; 
       txt_D2.text = prefsXML.Data2; 
       txt_D3.text = prefsXML.Data3; 

      } 


      function windowClosingHandler(event:Event):void 
      { 
       saveData(); 
      } 


      function saveData():void 
      { 
       createXMLData(); 
       writeXMLData(); 
      } 


      function createXMLData():void 
      { 
       prefsXML = <preferences/>; 
       prefsXML.Data1 = 1; 
       prefsXML.Data2 = 2; 
       prefsXML.Data3 = 3; 
      } 


      function writeXMLData():void 
      { 
       var outputString:String = '<?xml version="1.0" encoding="utf-8"?>\n'; 
       outputString += prefsXML.toXMLString(); 
       outputString = outputString.replace(/\n/g, File.lineEnding); 
       stream = new FileStream(); 
       stream.open(prefsFile, FileMode.WRITE); 
       stream.writeUTFBytes(outputString); 
       stream.close(); 
      } 

appStart(); 

答えて

4

は、我々としても、デバイス/ PC、File.applicationStorageDirectory上のユーザーデータを格納するAIRアプリケーション(デスクトップ、アンドロイド、iOS版)のためにそれを使用しています。あなたのコードはクロスプラットフォームなので、Androidで動かない場合は他の問題があるかもしれませんが、コードは正常です。

File.applicationStorageDirectoryにデータを読み書きするには、アプリケーションマニフェストで明示的なアクセス権も必要ありません。

+0

設定ですべての権限を選択してもう一度コンパイルしました。今それは動作します。 –

+0

@MohammadSamirあなたはすべてのアクセス権**を必要としません。あなたのファイルがそうでない場合には、(SDカード、電話の連絡先、GPSなど...)なぜならすべてのものにアクセスする必要があるアプリによって、一部の人はオフになります。 'File.applicationStorageDirectory'内に保存/ロードされました... –

0

Androidバージョンが6.0以上の場合、実行時にファイルやカメラなどの権限をリクエストする必要があります。

35 = -swf-バージョンのコンパイラオプションを使用して、あなたはAIR 24.0を持っていることを確認し、ような何か:

のvarにPermissionCheck:ファイル=新しいファイル( "テスト"));

    permissionCheck.addEventListener(PermissionEvent.PERMISSION_STATUS , function permissionStatusHandler(e : PermissionEvent) :void 
        {       
         permissionCheck.removeEventListener(PermissionEvent.PERMISSION_STATUS , permissionStatusHandler); 
         if(e.status == PermissionStatus.GRANTED) 
         {        
          // save your file 
         } 
         else 
         { 
          showPermissionError(); 
         } 

        }); 

        try 
        { 
         permissionCheck.requestPermission(); 

        } 
        catch(error : Error) 
        { 

        } 

、カメラの許可を扱うなど詳細はAIRのリリースノートを参照してください。

https://helpx.adobe.com/flash-player/release-note/fp_24_air_24_release_notes.html

は、この情報がお役に立てば幸いです。

関連する問題