我正在尝试发现哪些应用可以处理图片和视频,我假装在此之后从我的应用中启动该类型的默认应用。
我有这段代码:
CFArrayRef *array = LSCopyAllRoleHandlersForContentType(kUTTypeAudiovisualContent, kLSRolesEditor);
运行此array = NULL
我期待在该列表上看到Photoshop,预览等,但我得到了它。
注意:这是一个沙盒应用程序,将在App Store上分发。这就是出现这种错误的原因吗?
答案 0 :(得分:2)
该调用只会返回声称可以处理完全通用和抽象的“视听内容”类型的应用程序。几乎没有应用程序会声称这一点。他们怎么样?什么应用程序可以设想处理视听内容的每个变体?
例如,如果您正在撰写处理图片的应用,那么您肯定只能处理一些特定类型的图片(public.png
,public.jpeg
,public.tiff
等。 )。您不能声称完全处理图像(即public.image
)。这意味着你声称要以各种可想象的文件格式处理图像,甚至是尚未发明的格式,因为一旦它们被发明,它们的UTI肯定会符合public.image
。
出于同样的原因,任何应用都无权声称处理public.audiovisual-content
。
(顺便说一下,public.image
不符合public.audiovisual-content
。所以后者并不包含“图片和视频”。)
您将不得不搜索应用程序实际可能声称要处理的更具体的UTI。我不知道沙盒是否会干扰这项任务。您可以构建应用程序的非沙盒版本以进行测试。
我不确定你的意思是“我假装推出该类型的默认应用程序”。 “假装”启动应用程序意味着什么?