flutter如何获取应用列表

在Flutter中如何获取设备上已安装的应用列表?我尝试了一些方法但无法实现,需要获取包名、应用图标和应用名称等信息。请问有哪些可行的方案或插件可以实现这个功能?最好能提供具体的代码示例或实现思路。

2 回复

在Flutter中,使用package_info_plus包获取应用信息,或通过android_intent和平台通道调用原生API获取应用列表。注意权限和平台差异。

更多关于flutter如何获取应用列表的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中获取设备上已安装的应用列表,可以通过使用 device_apps 插件实现。以下是详细步骤和代码示例:

步骤:

  1. 添加依赖
    pubspec.yaml 文件中添加:

    dependencies:
      device_apps: ^2.1.1
    
  2. 配置权限(仅 Android)
    android/app/src/main/AndroidManifest.xml 中添加:

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

    注意:Google Play 对应用列表访问有严格限制,若上架需验证合规性。

  3. 代码实现

    import 'package:device_apps/device_apps.dart';
    
    Future<void> getInstalledApps() async {
      List<Application> apps = await DeviceApps.getInstalledApplications(
        includeSystemApps: true,    // 包含系统应用
        onlyAppsWithLaunchIntent: true, // 仅可启动应用
        includeAppIcons: true       // 包含图标(可能增加加载时间)
      );
      
      for (var app in apps) {
        print("应用名: ${app.appName}");
        print("包名: ${app.packageName}");
        if (app is ApplicationWithIcon) {
          print("图标: ${app.icon}");
        }
      }
    }
    

注意事项:

  • iOS 限制:由于沙盒机制,iOS 无法获取其他应用列表,此插件在 iOS 上仅返回当前应用信息。
  • 权限说明:Android 10+ 需 QUERY_ALL_PACKAGES 权限,但需遵循商店政策。
  • 返回的 Application 对象包含应用名称、包名、版本等基础信息。

替代方案:

如需更精细控制,可通过 android_intent 调用系统应用管理器,但无法直接获取列表数据。

此方法简单高效,适合大多数应用列表获取场景。

回到顶部