私はIOS用のXamarinを使ってアプリケーションを開発していますが、OpenGLゲームテンプレートを最初に使用しました。絶対NSURLからのファイルをxamarinにロードするには
私はこれを行う場合は、問題があるを特定のファイル形式を開くことができるように私のアプリを設定している、とAppDelegate.csでのOpenURLデリゲートを上書きしている
:
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
Stream bob = new FileStream(url.AbsoluteString, FileMode.Open, FileAccess.Read);
return true;
}
/// ...の部分が、FileStreamを、常により多くのサニタイズパスを望んでいる(ウィット:私はこれはurl.AbsoluteStringがファイルを返すためと考えられる
"Unable to open file : /private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/MyApp.app/file:///private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/Documents/Inbox/A%20File%20To%20Open.ext"
の線に沿って例外何かを得ます時間例えばスペースに置き換え%の20代を)私はそれが「ファイルを削除し、url.AbsoluteStringを取るのは非常にハック方法で動作するようになった最終的にはアプリケーションのバンドルディレクトリ
/private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/MyApp.app/
でなければならないものに比べ:/// "の部分に、../../../などの束を追加し、"%20 "を" "に置き換えます。
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
string fname = "../../../../../../../../../" + (url.AbsoluteString).Replace("%20", " ").Replace("file:///","");
Stream bob = new FileStream(fname, FileMode.Open, FileAccess.Read);
return true;
}
これはうまくいきましたが、ひどくハックしたようです。では、Xamarinを使用して、ファイルを指すNSURLから読みやすいファイルストリームを取得する正しい方法は何ですか?
あなたはファイルパスを取得することができます
'NSUrl'の源は何ですか?これはファイルピッカーから来ますか?私はちょうど最近非常に類似した動作を実装しました。 – matthewrdev