1

次のコードは、デスクトップで実行すると機能しますが、Android デバイスでは機能しません。以下のことが関係していると思いFileStreamます。

これを Android デバイスにも保存する方法について何か考えはありますか?

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.events.Event;

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;


var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, complete_handler);
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest("http://massmediamail.com/mp3s/Why%20a%20Protestant%20Pastor%20Beacame%20Catholic.mp3"));
//any file type;


function complete_handler(event:Event):void
{
    var data:ByteArray = event.target.data;

    var fr:FileReference = new FileReference();
    trace(File.applicationDirectory.nativePath);
    fr.save(data, 'Catholic.mp3');

    var fileStream:FileStream = new FileStream();
    trace(File.applicationDirectory.nativePath);
    fileStream.open(new File (File.applicationStorageDirectory.nativePath+"\\Catholic.mp3"),FileMode.WRITE);
    fileStream.writeBytes(data, 0, data.length);
}

ここにエラーがあります:

    Error #2044: Unhandled IOErrorEvent:. text=Error #2038: File I/O Error.
    at Untitled_fla::MainTimeline/complete_handler()[Untitled_fla.MainTimeline::frame1:25]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()

これは、IT が参照している行でもあります。

fileStream.open(new File (File.applicationStorageDirectory.nativePath+"\\Catholic.mp3"),FileMode.WRITE);
4

2 に答える 2

1

Air for Android で動作します。はい、後でさらに多くのことができますが、これが基本的な開始点です。

import flash.net.FileReference;

/// It can be an mp3,jpg, png, etc... just change the url
/// and the extension name. nice huh?
var yourFileLocation = "http://YourWeb.com/YourSong.mp3";
var yourFileName = "YourSong.mp3";

var daFile:FileReference = new FileReference();
daFile.download(new URLRequest(yourFileLocation), yourFileName);

私は永遠に働きました...これを見つけるために。多くの人に役立つことを願っています。なぜこれがより一般的な知識ではないのですか?アクション スクリプト内の何かを見つけることができない場合があります。

これに関して 1 つの質問があります。ユーザーが場所を選択するのではなく、コードをデバイス上の場所に直接ダウンロードするにはどうすればよいですか。どうもありがとう!

于 2012-08-20T00:26:04.833 に答える
0

間違いなく「\」ではなく「/」に変更する必要があります。AndroidはLinuxベースのシステムです。実際には、文字列ではなくFile.separatorプロパティを使用する必要があります。これにより、コードがクロスプラットフォームに保たれます。

一般的に、これを使用できるはずですが:

File.applicationStorageDirectory.resolvePath( "Catholic.mp3" );

アプリケーションにファイルシステムへの書き込みを許可しましたか?

これを行うには、次の行、特に「WRITE_EXTERNAL_STORAGE」行をアプリケーション記述子に追加する必要があります。

<android>
    <manifestAdditions><![CDATA[
        <manifest android:installLocation="auto">
            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        </manifest>
    ]]></manifestAdditions>
</android>

また、これらのエラーをリッスンして詳細情報を取得し、コードで処理する必要があります。

fileStream.addEventListener( IOErrorEvent.IO_ERROR, fileStream_errorHandler, 
于 2012-08-18T23:52:15.697 に答える