@@ -3,6 +3,7 @@ import 'dart:io';
3
3
4
4
import 'package:archive/archive_io.dart' ;
5
5
import 'package:async/async.dart' ;
6
+ import 'package:desktop_adb_file_browser/riverpod/package_list.dart' ;
6
7
import 'package:desktop_adb_file_browser/utils/platform.dart' ;
7
8
import 'package:dio/dio.dart' ;
8
9
import 'package:flutter/cupertino.dart' ;
@@ -22,6 +23,8 @@ abstract class Adb {
22
23
static final _fileListingRegex =
23
24
RegExp (r"([\w-]+) *(\d+) *(\w+) *(\w+) *(\d+) *([\d-]+) *([\d:]+) *(.*)" );
24
25
26
+ static final _packageVersion = RegExp (r"versionName=(.*)\n" );
27
+
25
28
static final Context adbPathContext = Context (style: Style .posix);
26
29
27
30
static const String adbDownloadURL =
@@ -283,8 +286,7 @@ drwxrwx--x 2 u0_a140 sdcard_rw 3488 2023-11-01 10:45 mods_old
283
286
fixPath (path, addQuotes: false ), false , serialName);
284
287
}
285
288
286
- static Future <List <String >> getPackageList (
287
- String ? serialName) async {
289
+ static Future <List <String >> getPackageList (String ? serialName) async {
288
290
var result = await runAdbCommand (serialName, ["shell" , "pm list packages" ]);
289
291
290
292
var listed = (result.stdout as String )
@@ -297,6 +299,24 @@ drwxrwx--x 2 u0_a140 sdcard_rw 3488 2023-11-01 10:45 mods_old
297
299
return listed;
298
300
}
299
301
302
+ static Future <PackageMetadata > getPackageInfo (
303
+ String ? serialName, String packageId) async {
304
+ var result = await runAdbCommand (
305
+ serialName, ["shell" , "dumpsys package $packageId " ]);
306
+
307
+ String str = result.stdout;
308
+ str = str.replaceAll ("\r\n " , "\n " );
309
+
310
+ final version = _packageVersion.firstMatch (str)? [1 ] ?? "version n/a" ;
311
+
312
+ return PackageMetadata (
313
+ packageName: "" ,
314
+ packageId: packageId,
315
+ version: version,
316
+ groupId: "" ,
317
+ );
318
+ }
319
+
300
320
static Future <List <String >?> getDevicesSerial () async {
301
321
const requiredString = "List of devices attached\n " ;
302
322
0 commit comments