You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UIActivityViewController中仅保留Email+作为唯一分享选项?

如何移除UIActivityViewController默认分享选项,仅保留Email+

当然能搞定!要让UIActivityViewController只显示你需要的Email+分享选项,核心就是先把所有默认的分享入口都藏起来,再精准指定只留你要的那个。下面给你两种实用的实现思路,分情况选就行:

方法一:直接指定允许的活动类型(适合系统自带Email或已知ActivityType的场景)

这种方法最简单,先把所有系统默认的分享活动全部排除,再只允许你需要的Email+对应的活动类型:

  • 第一步:创建UIActivityViewController并准备好分享内容
  • 第二步:通过excludedActivityTypes把所有系统默认活动都列进去,隐藏它们
  • 第三步:用allowedActivityTypes指定只保留Email+对应的类型

Swift代码示例:

// 准备你要分享的内容(文本、图片等都可以)
let shareContent = "这是我要通过Email+分享的内容"
let activityVC = UIActivityViewController(activityItems: [shareContent], applicationActivities: nil)

// 排除所有系统默认的分享选项(覆盖iOS各版本常见的类型)
activityVC.excludedActivityTypes = [
    .postToFacebook, .postToTwitter, .postToWeibo,
    .message, .mail, .print, .copyToPasteboard,
    .assignToContact, .saveToCameraRoll, .addToReadingList,
    .postToFlickr, .postToVimeo, .postToTencentWeibo,
    .airDrop, .openInIBooks, .markupAsPDF, .sharePlay
]

// 只允许Email+对应的活动类型(如果是系统自带邮件,用.mail;如果是第三方Email+,替换成它的ActivityType)
activityVC.allowedActivityTypes = [.mail]

// 弹出分享控制器
present(activityVC, animated: true)

方法二:筛选匹配第三方Email+应用(如果是第三方邮件APP)

如果Email+是第三方应用,没有对应的系统UIActivityType,那就需要先遍历所有可用的分享活动,找到匹配该应用的项,再指定只保留它:

  • 先加载活动控制器,获取所有可用的分享活动
  • 根据应用的显示名称(比如"Email+")筛选出目标活动
  • 把该活动的类型设置为唯一允许的类型

Swift代码示例:

let shareContent = "这是我要通过Email+分享的内容"
let activityVC = UIActivityViewController(activityItems: [shareContent], applicationActivities: nil)

// 目标应用的显示名称(就是分享列表里显示的APP名字)
let targetAppName = "Email+"

// 加载视图并获取可用活动
activityVC.loadViewIfNeeded()
if let availableActivities = activityVC.availableActivities {
    // 找到匹配目标名称的活动
    let targetActivity = availableActivities.first { $0.title == targetAppName }
    if let targetActivityType = targetActivity?.activityType {
        // 只允许这个活动类型
        activityVC.allowedActivityTypes = [targetActivityType]
    }
}

// 设置弹出源(iPad需要,iPhone可省略)
activityVC.popoverPresentationController?.sourceView = self.view

// 弹出控制器
present(activityVC, animated: true)

注意事项

  • 确保目标Email+应用已经安装在设备上,否则分享列表里不会出现它
  • iOS不同版本的系统UIActivityType可能有新增,所以excludedActivityTypes可以根据自己的iOS版本需求补充
  • 如果用allowedActivityTypes,系统会自动隐藏所有不在列表里的活动,所以也可以不用excludedActivityTypes,直接指定允许的类型即可(不过有些系统活动可能需要额外排除,视情况调整)

内容的提问来源于stack exchange,提问作者Sumit Kapadia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:03:14