mat*_*att 4 c# xamarin.ios ios xamarin
我正在使用Xamarin for IOS开发一个应用程序,首先使用opengl游戏模板。
我已将我的应用设置为能够打开某种文件格式,并在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;
}
Run Code Online (Sandbox Code Playgroud)
我有一个类似的例外
"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"
Run Code Online (Sandbox Code Playgroud)
这似乎是因为url.AbsoluteString返回file:/// ...部分,但FileStream始终希望使用相对于应用程序包目录必须更干净的路径(例如,%20s替换为空格)
/private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/MyApp.app/
Run Code Online (Sandbox Code Playgroud)
最后,我以一种非常hack的方式来工作,即采用url.AbsoluteString,删除“ file:///”部分,在开头添加了一堆../../../等,然后用“”替换“%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;
}
Run Code Online (Sandbox Code Playgroud)
这行得通...但是似乎骇人听闻。那么,使用Xamarin从指向文件的NSURL获取可读文件流的正确方法是什么?
(请注意,这是在iOS 7上的IOS 7上,传入的路径在许多方面与FileStream的默认dir不同,并且在dir树中也处于较高级别)
Path在NSUrl类上使用属性:
NSString urlString = new NSString("file:///stack/over%20flow/foobar.txt");
NSUrl myFileUrl = new NSUrl (urlString);
Console.WriteLine (myFileUrl.AbsoluteString);
string absPath = myFileUrl.Path;
Console.WriteLine (absPath);
2016-04-12 18:38:53.809 filepath[11174:1132929] file:///stack/over%20flow/foobar.txt
2016-04-12 18:38:53.814 filepath[11174:1132929] /stack/over flow/foobar.txt
Run Code Online (Sandbox Code Playgroud)
参考:https : //developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html#//apple_ref/occ/instp/NSURL/path
| 归档时间: |
|
| 查看次数: |
4794 次 |
| 最近记录: |