我在这里查看了很多帖子,有许多在线教程/示例代码,我很困惑。在我的应用程序中,我可以正常显示iOS7原生提供的UIActivityController以及适合我的应用程序的共享选项(AirDrop和邮件)。
我遇到的特定问题是,当用户选择通过邮件共享选项时,将保存的文档附加到电子邮件中。邮件正文设置为文本,但附件为MIA。相关代码为:
//生成要为当前显示的记录共享的XML文件...NSURL * url = [self createShareFile];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[@"Data shared from my app.", url] applicationActivities:nil];
// Filter out the sharing methods we're not interested in....
controller.excludedActivityTypes = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
UIActivityTypePostToWeibo,
UIActivityTypeMessage,
UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
// Now display the sharing view controller.
[self presentViewController:controller animated:YES completion:nil];
我想念的是什么?我的文件正在正确创建,内容正确,并且NSURL对象包含文件的正确路径。
谢谢!
问题已解决.....
我原始帖子中发布的代码是100%准确的。问题最终以我构建在我的createShareFile方法中返回的NSURL的方式出现:
不正确(原始方式):
return [NSURL URLWithString:[docFile stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
正确的方法:
return [NSURL fileURLWithPath:docFile];
我一修复此问题,即使使用我的自定义文件类型,它也开始起作用。
我有一个类似的问题,其中邮件应用程序是我唯一无法添加pdf的应用程序。这是我在Swift中的代码以及处理iPad弹出窗口的代码。
var filesToShare = [Any]()
filesToShare.append(self.myUrl)
let activityViewController = UIActivityViewController(activityItems: filesToShare as [Any], applicationActivities: nil)
present(activityViewController, animated: true)
// for iPad -> where to present on screen
if let popOver = activityViewController.popoverPresentationController {
//action button being my top left icon
popOver.barButtonItem = self.actionButton
}
我的问题是如何以不同的方式处理URL