从UIActivityViewController中排除UIActivities

时间:2016-01-18 15:59:31

标签: ios swift uiactivityviewcontroller

我正在使用UIActivityViewController分享 .CSV 文件,如果用户拥有我的应用,该文件可以由我的应用打开。我只想让我的用户使用网络,邮件或空投进行分享。

这或多或少是我的代码

 //Initialize activityVC. Activity item is [self] because I'm adopting UIActivityItemSource Protocol.
let activityVC = UIActivityViewController(activityItems: [self], applicationActivities: nil) 

//Here I'm trying to exclude everything but web, mail, and airdrop.
activityVC.excludedActivityTypes = [UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypePostToFacebook, UIActivityTypePostToFlickr, UIActivityTypePostToTencentWeibo, UIActivityTypePostToTwitter, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll]
      if #available(iOS 9.0, *) {
           activityVC.excludedActivityTypes?.append(UIActivityTypeOpenInIBooks)
      } else {
           // Fallback on earlier versions
      }

//Present VC
self.presentViewController(activityVC, animated: true, completion: nil)

所以我的问题是,即使我试图通过代码排除我可用的所有内容,我仍然会得到随机的应用程序,如懒散和笔记出现,当我不想要我的用户与此分享 .CSV 。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您无法从UIActivityViewController排除应用,因为这些应用声明可以打开并处理.csv文件类型(通过Document types中的Info.plist)。 如果您不想显示这些应用程序,则可以直接将文件共享到目标。例如,对于电子邮件,您可以使用MFMailComposeViewController