使用 UIDocumentInteractionController 和 UIActivityViewController 时禁用共享扩展选项
Posted
技术标签:
【中文标题】使用 UIDocumentInteractionController 和 UIActivityViewController 时禁用共享扩展选项【英文标题】:Disable Share Extension options when use UIDocumentInteractionController and UIActivityViewController 【发布时间】:2016-12-06 04:57:27 【问题描述】:我曾经使用UIDocumentInteractionController
和UIActivityViewController
与特殊的UTI
共享数据。
但是,当其他应用使用Share Extension
时,弹出分享界面时可能会有copy tp xxx
和import to xxx
等选项。
我如何禁用这些选项,或者是否有任何其他方式可以将数据共享到我可以控制的指定应用程序。
//======= 我的代码是这样的:
UIActivityViewController *activity = [[UIActivityViewController alloc] initWithActivityItems:@[itemUrl] applicationActivities:nil];
activity.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypePostToFacebook,UIActivityTypePostToWeibo,
UIActivityTypeMessage, UIActivityTypeMail, UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr, UIActivityTypePostToFlickr, UIActivityTypePostToFlickr,
UIActivityTypeAirDrop];
[self presentViewController:activity animated:YES completion:NULL];
【问题讨论】:
【参考方案1】:创建一个数组并添加不想显示给用户的类型,像这样
NSArray *excludeActivities = @[UIActivityTypeAirDrop,
UIActivityTypePrint,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,
UIActivityTypeCopyToPasteboard];
Create a instance of UIActivityViewController
And set following propery
activityViewController.excludedActivityTypes = excludeActivities
【讨论】:
已经这样做了,它不能阻止那些有Share Extension
的应用,它仍然显示copy to xxx
和import to xxx
【参考方案2】:
我发现如果您分享为NSURL
,您将获得copy to xxx
或import to xxx
,但如果您分享为UIImage
,您将无法获得。
将显示import to xxx
avc = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObjects:fileURL, nil] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
不会显示
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:fileURL]];
avc = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObjects:image, nil] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
【讨论】:
以上是关于使用 UIDocumentInteractionController 和 UIActivityViewController 时禁用共享扩展选项的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)