listAllPackages static method

Future<List<String>> listAllPackages({
  1. String? serialno,
  2. required String cmd,
  3. bool third = true,
  4. bool sort = true,
})

Implementation

static Future<List<String>> listAllPackages(
    {String? serialno,
    required String cmd,
    bool third = true,
    bool sort = true}) async {
  final result = await Process.run(
      cmd,
      [
        'shell',
        if (serialno != null) '-s',
        if (serialno != null) serialno,
        'pm',
        'list',
        'packages',
        if (third) '-3'
      ],
      runInShell: true);
  if (result.exitCode == Ok) {
    //package:com.example.example
    //package:com.miui.userguide
    //package:com.xiaomi.mibrain.speech
    final List<String> r = <String>[];
    String packageString = result.stdout as String;
    final packagesList = packageString.split('\n');
    for (var packageName in packagesList) {
      if (packageName.contains('package')) {
        r.add(packageName.split(':')[1]);
      }
    }
    if (sort) {
      r.sort();
    }
    return r;
    // packages
  } else {
    return [];
  }
}