Skip to content

sharmadhiraj/installed_apps

Repository files navigation

Installed Apps

Installed Apps is a Flutter plugin that provides utilities to interact with installed apps on a device. You can list installed apps, get app info, launch apps, open settings, and more.

⚠️ Currently, only Android is supported. iOS methods return default/fallback values.


Version 2.0.0 Breaking Changes

Version 2.0.0 has some breaking changes, for example, getInstalledApps now uses **named arguments ** instead of positional arguments as before. Additionally, some other argument names have been updated.

Features

  • List installed apps with optional filters:
    • Exclude system apps
    • Exclude non-launchable apps
    • Filter by package name prefix
    • Filter by platform type
  • Get detailed app info
  • Launch apps by package name
  • Open app settings
  • Check if an app is system or installed
  • Uninstall apps
  • Show toast messages

Installation

flutter pub add installed_apps

Or check the Installation Guide.

Example project: GitHub


Usage

Get Installed Apps

List<AppInfo> apps = await InstalledApps.getInstalledApps(
  // Optional: whether to exclude system apps from the list. Default is true.
  excludeSystemApps: true,
  
  // Optional: whether to exclude apps that cannot be launched (no launch intent). Default is true.
  excludeNonLaunchableApps: true,
  
  // Optional: whether to include app icons in the result. Default is false.
  withIcon: false,
  
  // Optional: filter apps whose package names start with this prefix. Default is null (no filtering).
  packageNamePrefix: "com.example",
  
  // Optional: filter apps by platform type (Flutter, React Native, etc.). Default is null (no filtering).
  platformType: PlatformType.flutter,
);

Get App Info

AppInfo? app = await InstalledApps.getAppInfo("com.example.myapp");

AppInfo Model

class AppInfo {
  String name;
  Uint8List? icon;
  String packageName;
  String versionName;
  int versionCode;
  PlatformType platformType;
  int installedTimestamp;
  bool isSystemApp;
  bool isLaunchableApp;
}

Launch App

await InstalledApps.startApp("com.example.myapp");

Open App Settings

InstalledApps.openSettings("com.example.myapp");

Check System App

bool? isSystem = await InstalledApps.isSystemApp("com.example.myapp");

Uninstall App

bool? success = await InstalledApps.uninstallApp("com.example.myapp");

Check if Installed

bool? installed = await InstalledApps.isAppInstalled("com.example.myapp");

PlatformType Enum

enum PlatformType {
  flutter('flutter', 'Flutter'),
  reactNative('react_native', 'React Native'),
  xamarin('xamarin', 'Xamarin'),
  ionic('ionic', 'Ionic'),
  nativeOrOthers('native_or_others', 'Native or Others');
}

QUERY_ALL_PACKAGES Permission and Play Store Review

The QUERY_ALL_PACKAGES permission is required for some functionality of this package, but including it can cause Play Store rejections if your app doesn’t justify it. To handle this, either declare its necessity in the Play Store listing or use tools:node="remove" in your manifest to exclude it while still using the package (note this will limit visibility to all apps). For multi-flavor setups, you can include the permission in src/dev/AndroidManifest.xml for internal/dev builds and remove it in src/playstore/AndroidManifest.xml for Play Store builds, ensuring each flavor has the correct manifest without affecting core functionality.

Notes

  • Android requires QUERY_ALL_PACKAGES permission for full app visibility. Ensure compliance with Play Store policies.
  • All methods catch exceptions and return default/fallback values to prevent crashes.

Support

If you encounter any issues or have suggestions, please open an issue on GitHub. Contributions and feedback are welcome!

Releases

No releases published

Packages

No packages published

Contributors 7