From d21f707fd5a9f43c44228a07e46ef15ff23e500c Mon Sep 17 00:00:00 2001 From: Janik Besendorf Date: Wed, 27 May 2026 18:26:14 +0200 Subject: [PATCH] Add ADB device selection menu --- main.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/main.go b/main.go index 124961c..382be5e 100644 --- a/main.go +++ b/main.go @@ -13,6 +13,7 @@ import ( "time" "github.com/i582/cfmt/cmd/cfmt" + "github.com/manifoldco/promptui" "github.com/mvt-project/androidqf/acquisition" "github.com/mvt-project/androidqf/adb" "github.com/mvt-project/androidqf/log" @@ -38,6 +39,20 @@ func systemPause() { os.Stdin.Read(make([]byte, 1)) } +func selectADBDevice(devices []string) (string, error) { + promptDevice := promptui.Select{ + Label: "Multiple Android devices detected. Select the device to acquire", + Items: devices, + } + + _, device, err := promptDevice.Run() + if err != nil { + return "", fmt.Errorf("failed to select ADB device: %v", err) + } + + return device, nil +} + func main() { var err error var verbose bool @@ -107,6 +122,20 @@ func main() { // Initialization for { + if serial == "" { + devices, err := adb.Client.Devices() + if err != nil { + log.Error(fmt.Sprintf("Error listing ADB devices: %s", err)) + } else if len(devices) > 1 { + serial, err = selectADBDevice(devices) + if err != nil { + log.Error(fmt.Sprintf("Error selecting ADB device: %s", err)) + time.Sleep(5 * time.Second) + continue + } + } + } + serial, err = adb.Client.SetSerial(serial) if err != nil { log.Error(fmt.Sprintf("Error trying to connect over ADB: %s", err))