flutter_device_apps 1.1.0
flutter_device_apps: ^1.1.0 copied to clipboard
Flutter plugin to list installed Android apps, get app icons, check installation status, launch apps, and detect packaged frameworks.
flutter_device_apps #
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