具有多个pathExtension的HandleOpenURL

时间:2013-01-18 13:47:50

标签: ios email path export mime-types

我正在构建一个应用程序,允许用户导出导入数据文件并通过电子邮件发送。

所以我创建了一个扩展名为“.myAppExtension”的数据文件类型。

第一次一切顺利。我无法导出和发送电子邮件。当我打开电子邮件时,该方法确实有效。

-(BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url {

if (url != nil && [url isFileURL]) {
    NSLog(@"%@",url);
    NSLog(@"%@",[url pathExtension]);

    if([[[url pathExtension] lowercaseString] isEqualToString:[@"myAppExtension"  lowercaseString]]){
        //Deal with received file 

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Export ok" message:[NSString stringWithFormat:@"This file has been added : %@",[url lastPathComponent]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil,nil];
        [alert show];
    }else{

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Export failed" message:[NSString stringWithFormat:@"This extention is not supported : %@",[url pathExtension]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil,nil];
        [alert show];
    }

}
return YES;
}

我的问题是,当我想导出扩展名为“otherExtension”的其他类型的文件时。我没有在我的应用中为此扩展程序创建数据类型。

因此,我导出并发送包含此第二类文件的电子邮件。文件名显示在电子邮件“file.otherExtension”中。但是,这是问题,当我点击这个邮件附件时,电子邮件应用程序让我在我的应用程序中打开它。这不是我想要的,正如我所说,我没有为“otherExtension”创建数据类型。

编辑:这是我在myApp-info.plist中创建文件类型的方式:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,问题来自发送电子邮件功能。

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init] ;
[picker setSubject:mailSubject];
[picker addAttachmentData:codedData mimeType:@"application/myApp" fileName:[filePath lastPathComponent]];
[picker setToRecipients:[NSArray array]];
[picker setMessageBody:mailBody isHTML:NO];
[picker setMailComposeDelegate:self];
[currentMainViewController presentViewController:picker animated:YES completion:nil];

通过将mime类型添加到邮件附件,接收应用程序正在使用它来读取文件。用“nil”替换mime类型解决了我的问题。

[picker addAttachmentData:codedData mimeType:nil fileName:[filePath lastPathComponent]];