2011-07-25 2 views
5

webStageViewのインスタンスにローカルHTML(プロジェクトのフォルダ構造に存在する)をロードしようとしています。 File.applicationStorageDirectory.urlリターン「APP-: - これは窓やiPad/iPhoneで正常に動作しますが、それは、Androidでファイルを見つけることができない(のみ2.2でそれを試してみました)webStage AndroidでのローカルHTMLパスの表示

File.applicationDirectory.urlは「アプリ」を返しますstorage: "

File.applicationDirectory.nativePathは、Adobeのドキュメントで指定されている空の文字列を返します。

問題は、Webビューで「Webページが利用できない、app:/test/index.htmlが見つかりません」というエラーが発生することです。フルパスを取得する方法、またはブラウザに「強制的に」アプリケーションを理解させる方法はありますか:特定のフォルダを参照していますか?

ありがとうございます!

+1

SDカードを指すdocumentsDirectoryを使用して、これを当面は「固定」しました。かなりのハックですが、正常に動作します(もちろん一時的です) – Pantelis

答えて

0

Adobe help statesとおり

アプリ:アプリストレージ:スキームがサポートされていません。

あなたのコードは完全に動作しますが、AndroidではStateWebViewに関連するセキュリティ上の問題がこれらのディレクトリからURLを読み込むため、あなたのようなハックのある実装で実現する必要があります。 StageWebViewのにその一時ファイルのURLをファイルを一時的なものにしてロードします:またはアプリ - ストレージ:別の解決策は、あなたのアプリケーションをコピーすることです

var htmlFile:File = File.applicationDirectory.resolvePath(url); 
var workingFile:File = File.createTempFile(); 
htmlFile.copyTo(workingFile, true); 
stageWebView.loadURL(workingFile.url); 

編集:別の解決策は、あなたのHTMLコンテンツは、の.asにコーディング持っている可能性がありStageWebView.loadString()メソッドを使用します。あなたはAndroidデバイスのためにその文字列をエンコードする必要があることを覚えておいてください。

0

この問題は数日後に解決します。 file:URLスキームは、クライアントマシン上のファイルを参照します。ファイルにはホスト名がありません:scheme;ファイルのパスを指定するだけです。したがって、ローカルマシンのファイルはfile:///~User/2ndFile.htmlになります。 3つのスラッシュに注目してください。 URLのホスト名部分は空です。そのため、パスの先頭にあるスラッシュは、URLの先頭にある二重スラッシュの直後にあります。また、ユーザーのパスを拡張する必要があります。 〜はファイル内で展開しません:URL。したがって、あなたはfile:///home/User/2ndFile.html(ほとんどのUnixes上)、file:///Users/User/2ndFile.html(Mac OS X上)、またはfile:/// C:/ Users/User/2ndFile.html(Windowsの場合) このソリューションは私のアプリで完璧に動作します。

関連する問題