0

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

所以我创建了一个扩展名为“.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 中创建文件类型的方式:

在此处输入图像描述

4

1 回答 1

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]];
于 2013-01-21T10:42:45.143 回答