2013-04-04 56 views
0

我一直在嘗試使用NSWorkspace和fullPathForApplication,但這不符合我的需求,因爲它不會返回正確的應用程序。Objective-C - 遍歷所有已安裝的應用程序

我可以這樣做:

[NSBundle bundleWithPath: [[NSWorkspace sharedWorkspace] fullPathForApplication: @"My Application"]]; 

,這將返回爲準(我相信)是最近安裝了的:

/Applications/My Application 
/Applications/My Application 2 

我想「我的應用」被退回,但第二是正在返回。我不想假設所有應用程序都安裝在/ Applications /中,所以我不只是要循環訪問一個文件夾。

有誰知道我可以手動只是循環遍歷所有應用程序,並驗證哪些是正確的?或者類似的方法來fullPathForApplication將返回所有結果,而不是隨機選擇一個?

回答

1

我相信你正在使用的NSWorkspace方法是LSFindApplicationForInfo()一個門面,這是記錄只返回一個單一的應用:

如果找到一個以上的應用程序符合指定的特點,發射服務選擇其中一種方式與定位打開項目的首選應用程序的方式相同。

如果您的應用程序打開一個特定的文件類型或URL,使用LSCopyApplicationURLsForURL(),它返回匹配的應用程序的數組。

相關問題