From 01190bfa696c4bd2c81240d215e15ac8b5cee6f8 Mon Sep 17 00:00:00 2001 From: slava Date: Thu, 14 May 2026 22:00:59 +0700 Subject: [PATCH] =?UTF-8?q?Adjust=20"=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8"=20button=20tap=20position=20in=20`PayByPhon?= =?UTF-8?q?eScript`=20to=20the=20lower=20part=20of=20the=20button,=20avoid?= =?UTF-8?q?ing=20the=20"=D0=B7=D0=B0=20=D0=B4=D1=80=D1=83=D0=B3=D0=B0"=20b?= =?UTF-8?q?adge.=20Update=20debug=20logs=20accordingly.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/adb/AdbUtils.cpp | 11 +++++++++-- android/ozon/PayByPhoneScript.cpp | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/android/adb/AdbUtils.cpp b/android/adb/AdbUtils.cpp index fa7b228..2887a8e 100644 --- a/android/adb/AdbUtils.cpp +++ b/android/adb/AdbUtils.cpp @@ -574,16 +574,23 @@ bool AdbUtils::enableAdbIMEKeyboard(const QString &deviceId) { bool AdbUtils::inputAdbIMEText(const QString &deviceId, const QString &text) { QProcess process; process.setWorkingDirectory(adbDir()); + + // Кодируем UTF-8 → base64 и шлём через ADB_INPUT_B64. Это исключает любые проблемы + // shell-кавычек на устройстве с пробелами, скобками и не-ASCII символами + // (типа "Озон Банк (Ozon)"). ADBKeyboard декодирует base64 и вызывает commitText. + const QString b64 = QString::fromLatin1(text.toUtf8().toBase64()); + process.start(adbPath(), { "-s", deviceId, - "shell", "am broadcast -a ADB_INPUT_TEXT --es msg '" + text + "'" + "shell", "am broadcast -a ADB_INPUT_B64 --es msg " + b64 }); if (!process.waitForStarted(5000)) { qWarning() << "[AdbUtils] Failed to start adb broadcast:" << process.errorString(); return false; } process.waitForFinished(); - qDebug() << "[AdbUtils] inputAdbIMEText result:" << process.exitCode() + qDebug() << "[AdbUtils] inputAdbIMEText (b64) result:" << process.exitCode() + << "text:" << text << "output:" << process.readAllStandardOutput().trimmed() << "error:" << process.readAllStandardError().trimmed(); return process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0; diff --git a/android/ozon/PayByPhoneScript.cpp b/android/ozon/PayByPhoneScript.cpp index e8ef492..de4780e 100644 --- a/android/ozon/PayByPhoneScript.cpp +++ b/android/ozon/PayByPhoneScript.cpp @@ -344,6 +344,15 @@ void PayByPhoneScript::makePayment( // Вариант 2: уже на экране поиска банка (EditText) — только после клика на "Другой банк" if (otherBankClicked) { + // После перехода на экран поиска банка поле ввода прячется под верхним + // тулбаром (рендерится Svelte WebView'ом). Свайпаем сверху вниз, чтобы + // подтянуть содержимое и сделать поле физически видимым/активным. + qDebug() << "[PayByPhone] Scrolling up to reveal hidden bank search input..."; + AdbUtils::makeSwipe(deviceId, width / 2, height / 4, width / 2, height * 3 / 4); + QThread::msleep(800); + xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter)); + closeGooglePlayBannerIfVisible(deviceId, width, height); + Node bankInput = xmlScreenParser.findFirstEditText(); if (!bankInput.isEmpty()) { qDebug() << "[PayByPhone] Bank search screen detected, entering bank name...";