如何识别和排除 UIActivityViewController 中的第 3 方 ActivityType(例如 'Send to Kindle'、'Chrome')?
How to identify & exclude 3rd-party ActivityType (e.g. 'Send to Kindle', 'Chrome') in a UIActivityViewController?
如 here & 所述,可以使用 UIActivityViewController
的 excludedActivityTypes
排除其他 ActivityType
选项,而不仅仅是那些预定义的选项。
但是,如何找到任何给定 ActivityType
的标识符(如果可能,最好以编程方式在 build-/run-time 处找到),然后将它们排除在外?
例如,我希望禁用 Send to Kindle 和 Chrome.
在显示你的 UIActivityViewController
后 activity 找出第三方 activity 的 ActivityType
,select。
调用完成处理程序时,您提供给 activity 控制器的完成 closure/block 有一个类型为 ActivityType
的参数,告诉您选择了哪一个。
例如:
activityVC.completionWithItemsHandler = { activity, success, items, error in
print("activity: \(activity), success: \(success), items: \(items), error: \(error)")
}
现在您知道 ActivityType
对应 activity。更新您的代码以将该值添加到您传递给 excludedActivityTypes
.
的列表中
仅供参考,根据@rmaddy 的出色回答,这些是 Send to Kindle 和 [=25= 的特定标识符],如果有人感兴趣:
let kindleActivity = UIActivity.ActivityType(rawValue: "com.amazon.Lassen.SendToKindleExtension")
let chromeActivity = UIActivity.ActivityType(rawValue: "com.google.chrome.ios.ShareExtension")
this answer to a related question 中已经定义了许多其他示例。
不幸的是,即使将这些添加到 excludedActivityTypes
的数组中,它们似乎仍会出现在 UIActivityViewController
中。非常欢迎任何关于为什么以及如何解决这个问题的意见!
如 here & UIActivityViewController
的 excludedActivityTypes
排除其他 ActivityType
选项,而不仅仅是那些预定义的选项。
但是,如何找到任何给定 ActivityType
的标识符(如果可能,最好以编程方式在 build-/run-time 处找到),然后将它们排除在外?
例如,我希望禁用 Send to Kindle 和 Chrome.
在显示你的 UIActivityViewController
后 activity 找出第三方 activity 的 ActivityType
,select。
调用完成处理程序时,您提供给 activity 控制器的完成 closure/block 有一个类型为 ActivityType
的参数,告诉您选择了哪一个。
例如:
activityVC.completionWithItemsHandler = { activity, success, items, error in
print("activity: \(activity), success: \(success), items: \(items), error: \(error)")
}
现在您知道 ActivityType
对应 activity。更新您的代码以将该值添加到您传递给 excludedActivityTypes
.
仅供参考,根据@rmaddy 的出色回答,这些是 Send to Kindle 和 [=25= 的特定标识符],如果有人感兴趣:
let kindleActivity = UIActivity.ActivityType(rawValue: "com.amazon.Lassen.SendToKindleExtension")
let chromeActivity = UIActivity.ActivityType(rawValue: "com.google.chrome.ios.ShareExtension")
this answer to a related question 中已经定义了许多其他示例。
不幸的是,即使将这些添加到 excludedActivityTypes
的数组中,它们似乎仍会出现在 UIActivityViewController
中。非常欢迎任何关于为什么以及如何解决这个问题的意见!