(→Simple Approach: Keys table) |
m (→Simple Approach: More to do) |
||
Line 30: | Line 30: | ||
|} | |} | ||
''To | ''To do: Add explanation of ALSectionDescriptors and ALAllowsSelection. Add missing keys "listed" in the [https://github.com/rpetrich/AppList/blob/master/ALApplicationTableDataSource.m source code].'' | ||
=== PreferenceBundle Approach === | === PreferenceBundle Approach === |
Revision as of 01:07, 13 October 2014
AppList | |
Cydia Package | |
---|---|
Developer | Ryan Petrich |
Package ID | applist |
Latest Version | 1.5.7 |
AppList is a library for fetching app information. As described on its package page in Cydia: "Allows developers to query the list of installed apps and provide a preferences pane based on that information. Exports displayIdentifier, displayName, icon and smallIcon via a remote messaging center so that it's easy to write a prefs pane that presents a list of apps."
How to use this library
Headers are available from Applist's GitHub project and the library can be found at /usr/lib/libapplist.dylib
on a device where Applist is installed. If using Theos, place the headers in $THEOS/include/Applist
, the library in $THEOS/lib/
and add applist
to the XXX_LIBRARIES
Makefile variable.
PreferenceLoader
Simple Approach
The common way to use AppList is via its PreferenceLoader (preferences) integration, by putting entries in a PreferenceLoader plist: AppListSample.plist.
key | type | description |
---|---|---|
ALSettingsPath | string | absolute file path to a settings file |
ALSettingsKeyPrefix | string | key prefix for the key for the data to be saved |
ALChangeNotification | string | notification string to be posted when a change happens |
ALAllowsSelection | bool | - |
ALSectionDescriptors | array | array of PSSpecifier-style dictionaries. |
To do: Add explanation of ALSectionDescriptors and ALAllowsSelection. Add missing keys "listed" in the source code.
PreferenceBundle Approach
To get an array of applications' bundle identifiers and their display names sorted in alphabetical order by their display name:
ALApplicationList *apps = [ALApplicationList sharedApplicationList]; //list all the apps
NSArray *displayIdentifiers = [[apps.applications allKeys] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[apps.applications objectForKey:obj1] caseInsensitiveCompare:[apps.applications objectForKey:obj2]];}]; //sort the apps by display name
[displayIdentifiers retain]; //make sure it doesn't disappear when you actually need to use it, if you only use it once, release it
To get the display identifier and icon for a specific app at index {X}
, choose a size from this enum:
enum {
ALApplicationIconSizeSmall = 29,
ALApplicationIconSizeLarge = 59
};
And use the following snippet:
NSString *displayIdentifier = [displayIdentifiers objectAtIndex:{X}];
UIImage *icon = [apps iconOfSize:ALApplicationIconSizeSmall forDisplayIdentifier:displayIdentifier];
As seen in https://github.com/twodayslate/ListLauncher7
Retrieving Settings
To access the list of applications use the following, filtered by enabled apps:
This should be revised
NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistpath];
[[plistDict objectForKey:@"enable"] isEqualToString: @"YES"];
As seen in https://github.com/iceNuts/DisableNC-Switch