我想獲得所有安裝的應用程序(NSArray)的列表。我的應用程序是越獄應用程序,位於/ Applications,因此Sandbox在那裏沒有問題。有什麼辦法可以獲得應用商店應用列表嗎?我已經在其他應用程序(Activator,SBSettings ...)中看到了這一點。我不知道如何做到這一點,因爲所有的應用程序沙箱都有這麼大的代碼,所以我不知道如何才能訪問沙箱內的.app文件夾。獲取所有安裝的應用程序的列表
24
A
回答
13
您可以使用此代碼片段:
#import "InstalledAppReader.h"
static NSString* const installedAppListPath = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist";
@interface InstalledAppReader()
-(NSArray *)installedApp;
-(NSMutableDictionary *)appDescriptionFromDictionary:(NSDictionary *)dictionary;
@end
@implementation InstalledAppReader
#pragma mark - Init
-(NSMutableArray *)desktopAppsFromDictionary:(NSDictionary *)dictionary
{
NSMutableArray *desktopApps = [NSMutableArray array];
for (NSString *appKey in dictionary)
{
[desktopApps addObject:appKey];
}
return desktopApps;
}
-(NSArray *)installedApp
{
BOOL isDir = NO;
if([[NSFileManager defaultManager] fileExistsAtPath: installedAppListPath isDirectory: &isDir] && !isDir)
{
NSMutableDictionary *cacheDict = [NSDictionary dictionaryWithContentsOfFile: installedAppListPath];
NSDictionary *system = [cacheDict objectForKey: @"System"];
NSMutableArray *installedApp = [NSMutableArray arrayWithArray:[self desktopAppsFromDictionary:system]];
NSDictionary *user = [cacheDict objectForKey: @"User"];
[installedApp addObjectsFromArray:[self desktopAppsFromDictionary:user]];
return installedApp;
}
DLOG(@"can not find installed app plist");
return nil;
}
@end
6
在越獄的iPhone上,您只需閱讀/Applications
文件夾即可。所有安裝的應用程序都會去只需使用NSFileManager
列出的目錄中/Applications
:
NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"];
2
一些研究,我發現了一個名爲iHasApp框架之後。這裏是一個很好的解決方案,以返回與應用程序的名稱,標識和圖標的字典:Finding out what Apps are installed
2
另外還有AppList library
,這將做所有的髒活的你: rpetrich/AppList 它在很多越獄調整中使用,所以我不知道爲什麼它沒有建議在這裏。
獲取AppStore應用程序的一種方法是檢查列表中返回的每個應用程序的值爲isSystemApplication
。那些值設爲NO
的是常規的AppStore應用程序。還有一個功能applicationsFilteredUsingPredicate:predicate
,所以也許甚至可以事先過濾列表。
相關問題
- 1. 獲取所有安裝的應用程序的圖標列表
- 2. 如何獲取所有安裝的應用程序列表?
- 3. 我如何獲得所有安裝的應用程序列表?
- 4. 獲取所有安裝的應用程序列表中的Windows Phone 8
- 5. 獲取黑莓上所有已安裝應用程序的列表
- 6. 如何獲取iPhone中所有安裝的應用程序列表(越獄)?
- 7. 獲取Django中所有安裝的應用程序及其屬性列表
- 8. 使用Category.LAUNCHER獲取所有已安裝的應用程序
- 9. 如何獲取用戶安裝的所有應用程序?
- 10. 有沒有辦法獲得所有安裝的iPhone應用程序的列表?
- 11. 在iOS安裝的所有應用程序的列表8
- 12. 獲取已安裝的Windows應用程序的列表
- 13. 獲取已安裝的Android應用程序的列表
- 14. cocoa獲取已安裝應用程序的列表
- 15. 在UWP中獲取已安裝的應用程序列表
- 16. 獲取已安裝應用程序的列表
- 17. 獲取已安裝應用程序的Facebook好友列表
- 18. Windows Phone:獲取已安裝應用程序的列表
- 19. Android - 獲取安裝的應用程序簽名列表
- 20. 獲取已安裝的Facebook應用程序列表和權限?
- 21. 獲取已安裝應用程序的列表android
- 22. 獲取可以啓動的已安裝應用程序列表
- 23. 如何獲取Android中已安裝應用程序的列表?
- 24. 獲取Android設備上安裝的應用程序列表 - C#
- 25. 如何獲取已安裝應用程序圖標的列表
- 26. 獲取安裝的應用程序
- 27. Windows Phone:如何獲取已安裝應用程序的列表以及遠程安裝/刪除應用程序
- 28. 獲取已安裝的應用程序圖標的程序列表
- 29. Alphabatize安裝的應用程序列表
- 30. 獲取所有正在運行的應用程序的列表
這是不是一個私人API? – iJatrat
這不是一個私人API,但我們可以訪問私人文件夾。 Apple會拒絕你的應用程序。僅對越獄iPhone使用此代碼。 – Igor
@Fedorchuk,我怎麼能從普通的iOS設備得到這個安裝的應用程序列表,我的意思是沒有越獄iPhone,plz幫助我做到這一點。沒有越獄iPhone的 – maddysan