flutter_device_apps

Pub flutter_device_apps Pub points Star on Github License: MIT

A Flutter plugin to list installed Android apps, get app icons, check installation status, launch apps, and monitor app changes. Also detects packaged frameworks.

Requires Android API 24+, Flutter 3.44+, and Dart 3.12+. API reference · Guide: List installed Android apps in Flutter

Call WidgetsFlutterBinding.ensureInitialized() only when using APIs before runApp(). Calls from initState() and UI callbacks need no extra initialization.

List installed Android apps

final apps = await FlutterDeviceApps.listApps(
  includeSystem: false,
  onlyLaunchable: true,
  includeIcons: false,
  packageNamePrefix: null, // Optional: 'com.google.'.
  packageNameContains: null, // Optional: 'photos'.
);

Filters are case-sensitive and combined with AND; null or '' disables each filter.

Get apps by package name

final app = await FlutterDeviceApps.getApp('com.whatsapp', includeIcon: true);

final apps = await FlutterDeviceApps.getApps(
  ['com.whatsapp', 'org.telegram.messenger'],
  includeIcons: true,
);

getApp() returns null if unavailable; getApps() returns [] when no apps are found.

Detect packaged app frameworks

final frameworks = await FlutterDeviceApps.detectAppFrameworks('com.example.app');

Detects packaged indicators for Flutter, React Native, Unity, Unreal Engine, Godot, and .NET Android. This does not identify the app's primary UI framework. [] means no supported match; scan failures throw.

Listen to app install, update, and uninstall events

final subscription = FlutterDeviceApps.appChanges.listen(
  (event) => print('${event.type}: ${event.packageName}'),
  onError: (error) => print(error),
);

Stop listening with await subscription.cancel().

More APIs

All methods below belong to FlutterDeviceApps.

Method Purpose
getAppIcon(packageName) Get PNG icon bytes.
isAppInstalled(packageName) Check whether the app is installed and visible.
isSystemApp(packageName) Check system app status; null if unavailable.
isAppEnabled(packageName) Check enabled status; null if unavailable.
isAppLaunchable(packageName) Check whether a launch intent exists.
getRequestedPermissions(packageName) Get requested permission names.
getInstallSourceInfo(packageName) Get installer and install source metadata.
openApp(packageName) Launch the app.
openAppSettings(packageName) Open Android app settings.
uninstallApp(packageName) Open the uninstall confirmation screen.

Android setup

Only visible packages can be queried. Launcher app visibility is included. Place the XML below inside <manifest>, outside <application>, as needed.

For other specific packages:

<queries>
    <package android:name="com.example.service" />
</queries>

For broader visibility, add this permission; Google Play restricts its use. See package visibility.

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

uninstallApp() requires:

<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />

License

MIT © 2026 okmsbun

Libraries

flutter_device_apps
List installed Android apps, get app icons, launch apps, and monitor changes.