2015-08-09 51 views
-1

我想知道哪些應用程序可以處理圖像和視頻,並假裝從此後的應用程序啓動該類型的默認應用程序。可可應用程序:發現哪些應用程序可以處理圖像和視頻

我有這樣的代碼:

CFArrayRef *array = LSCopyAllRoleHandlersForContentType(kUTTypeAudiovisualContent, kLSRolesEditor); 

運行此array = NULL

我期待看到的Photoshop,預覽等,在名單上之後,但我得到了空。

注意:這是一個將在App Store上分發的沙盒應用程序。這是爲什麼這個錯誤發生?

回答

2

該調用只會返回聲稱可以處理完全通用和抽象的「視聽內容」類型的應用程序。幾乎沒有應用程序會聲稱。他們怎麼可能?什麼應用程序可以設想處理視聽內容的每一個變體?例如,如果您正在編寫處理圖片的應用程序,那麼您當然只能使用一些特定類型的圖片(public.png,public.jpeg,,public.tiff等)。您不能聲稱通常完全處理圖像(即public.image)。這意味着你聲稱要處理所有可能的文件格式的圖像,甚至是尚未發明的格式,因爲一旦它們被髮明,它們的UTI肯定會符合public.image

出於同樣的原因,沒有應用程序可以聲稱處理public.audiovisual-​content

(順便說一句,public.image不符合public.audiovisual-​content,因此後者不包括「圖像和視頻」。)

你將不得不尋找所有應用一些更具體的尿路感染實際上可能會主張處理。我不知道沙盒會不會干擾這個任務。您可以構建要測試的應用的非沙盒版本。

我不確定您的意思是「我假裝爲該類型啓動默認應用程序」。 「假裝」啓動應用意味着什麼?

+0

就是這樣。謝謝。 「假裝」我的意思是「意志」。換句話說,一旦我發現哪些應用可以與Type I打交道,就會發佈一個包含內容的應用。感謝 – SpaceDog

+0

奇怪的是:我運行這個'LSCopyAllRoleHandlersForContentType(kUTTypeJPEG,kLSRolesEditor)'並取回了3個對象:imageOptim,ColorSyncUtility和Preview。 Photoshop不在列表中,奇怪的是。當我右鍵點擊JPEG圖像並點擊打開時,我會看到15個選項,包括Illustrator,Photoshop,Safari和其他。 – SpaceDog

+0

查看您認爲應該處理給定類型但沒有的應用程序中的Info.plist文件。另外,當應用於圖像文件時,請查看'mdls'的輸出。一種可能性:應用程序不使用現代技術來聲明UTI處理的類型,而是使用文件擴展名。另一個:該文件實際上是一些更具體的類型,該應用聲稱,但不是'image.jpeg'。一般來說,如果你有一個文件記住你的代碼想要做什麼,你可以試試'LSCopyDefaultApplicationURLForURL()'或'LSCopyApplicationURLsForURL()'。 –

相關問題