通过openURL获取我的应用程序正在打开的文件的URL:

时间:2014-05-31 12:45:35

标签: c# ios xamarin

我使用自定义文件类型配置了我的应用。我添加了Info.plist文件(文档类型和导出的UTI)中所需的信息。现在iOS识别我的文件类型并将其与应用程序相关联。因此,例如,当我打开Mail,并将文件视为附件时,我可以点击它并选择使用我的应用程序打开。

如何从我的应用中获取文件的网址?我尝试在OpenUrl上使用UIApplication,但它不起作用。

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:2)

解决方案

我声明我需要一个Xamarin / C#的解决方案,但是我要求一个标准的Objective-c代码以便稍后在C#中翻译,因为我找不到任何相关内容。

最后,这是对我有用的解决方案:

AppDelegate.cs 文件中,我添加了此方法:

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
     NSNotificationCenter.DefaultCenter.PostNotification (NSNotification.FromName ("OpenMyFile", url));
     return true;
}

然后在我的主控制器中,我在“ViewDidLoad”方法中添加它:

NSNotificationCenter.DefaultCenter.AddObserver ("OpenMyFile", openFileVoid);

在同一课程中,我添加了一个新方法:

public async void openFileVoid (NSNotification notification)
{
    NSUrl _filePath = (NSUrl)notification.Object;
    // Do what you need with this file path
}

我希望对某人有用! :)

答案 1 :(得分:1)

我认为这与-[UIApplication openURL:]无关。

Apple Doc中所述:

  

您会收到有关该文件的信息   在application:willFinishLaunchingWithOptions:或。{   您的申请的application:didFinishLaunchingWithOptions:方法   代表。如果您的应用程序处理自定义文件类型,则必须   实现这个委托方法(而不是   applicationDidFinishLaunching:方法)并用它来初始化你的   应用

     

传递给的选项字典   application:willFinishLaunchingWithOptions:或   application:didFinishLaunchingWithOptions:方法包含信息   关于要打开的文件。

您可以在文档中详细了解它。