AppList

From iPhone Development Wiki
Revision as of 01:07, 13 October 2014 by Uroboro (talk | contribs) (→‎Simple Approach: More to do)
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

External links