, когда я пишу в ADB:проблемы с командой 'Grep' от ADB
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
я получаю выход ошибки:
'grep' is not recognized as an internal or external command, operable program or batch file.
но если я разделить его на два оператора:
adb shell
dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
работает нормально (он дает название основной деятельности запущенного приложения).
Если единственный способ состоит в том, чтобы разделить его на две части - это мены, которые сначала входят в оболочку adb, а затем запустить запрос, есть способ сделать это из C#?
в моем коде, это только первая часть (ввод оболочка).
вот мой код:
public static void startNewProccess(object startInfo)
{
p = new Process();
p.StartInfo = (System.Diagnostics.ProcessStartInfo)startInfo;
p.Start();
p.WaitForExit();
}
public static void getMainActivity()
{
var startInfo1 = new System.Diagnostics.ProcessStartInfo
{
WorkingDirectory = @ADB_FOLDER,
WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal,
FileName = "cmd.exe",
Arguments = "/c" + " adb shell",
//adb shell am start -n com.package.name/com.package.name.ActivityName
UseShellExecute = false
};
startNewProccess(startInfo1);
var startInfo2 = new System.Diagnostics.ProcessStartInfo
{
WorkingDirectory = @ADB_FOLDER,
WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal,
FileName = "cmd.exe",
Arguments = "/c" + " dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'",
UseShellExecute = false
};
}
Да, это ключевое различие. Хотя стоит отметить, что только в последних нескольких версиях оболочка Android включала «grep», поэтому версия не будет работать только с более старыми устройствами. Можно легко получить grep для окон, т. Е. От MSys, Cygwin или многих других источников. Но если захватить данные в программу, можно также выполнить соответствующую строку в программе потребления, а не в зависимости от инструмента, который может или не может существовать на конкретном хосте или устройстве. –