mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-08-03 14:18:45 +00:00
!3 解决获取部分手机(华为mate30)IP时,出现的"permission Denny"问题
* fix:permission Denny when get device(Huawei mate30) ip * resolve: call of overloaded ‘abs(float)’ is ambiguous
This commit is contained in:
parent
8f9898432f
commit
b24d38ad74
5 changed files with 42 additions and 2 deletions
|
@ -146,6 +146,20 @@ QString AdbProcess::getDeviceIPFromStdOut()
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString AdbProcess::getDeviceIPByIpFromStdOut()
|
||||||
|
{
|
||||||
|
QString ip = "";
|
||||||
|
|
||||||
|
QString strIPExp = "wlan0 inet [\\d.]*";
|
||||||
|
QRegExp ipRegExp(strIPExp,Qt::CaseInsensitive);
|
||||||
|
if (ipRegExp.indexIn(m_standardOutput) != -1) {
|
||||||
|
ip = ipRegExp.cap(0);
|
||||||
|
ip = ip.right(ip.size() - 14);
|
||||||
|
}
|
||||||
|
qDebug() << "get ip: " << ip;
|
||||||
|
return ip;
|
||||||
|
}
|
||||||
|
|
||||||
QString AdbProcess::getStdOut()
|
QString AdbProcess::getStdOut()
|
||||||
{
|
{
|
||||||
return m_standardOutput;
|
return m_standardOutput;
|
||||||
|
|
|
@ -31,6 +31,7 @@ public:
|
||||||
void setShowTouchesEnabled(const QString& serial, bool enabled);
|
void setShowTouchesEnabled(const QString& serial, bool enabled);
|
||||||
QStringList getDevicesSerialFromStdOut();
|
QStringList getDevicesSerialFromStdOut();
|
||||||
QString getDeviceIPFromStdOut();
|
QString getDeviceIPFromStdOut();
|
||||||
|
QString getDeviceIPByIpFromStdOut();
|
||||||
QString getStdOut();
|
QString getStdOut();
|
||||||
QString getErrorOut();
|
QString getErrorOut();
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ Dialog::Dialog(QWidget *parent) :
|
||||||
connect(&m_adb, &AdbProcess::adbProcessResult, this, [this](AdbProcess::ADB_EXEC_RESULT processResult){
|
connect(&m_adb, &AdbProcess::adbProcessResult, this, [this](AdbProcess::ADB_EXEC_RESULT processResult){
|
||||||
QString log = "";
|
QString log = "";
|
||||||
bool newLine = true;
|
bool newLine = true;
|
||||||
|
QStringList args = m_adb.arguments();
|
||||||
|
|
||||||
switch (processResult) {
|
switch (processResult) {
|
||||||
case AdbProcess::AER_ERROR_START:
|
case AdbProcess::AER_ERROR_START:
|
||||||
|
@ -32,13 +33,15 @@ Dialog::Dialog(QWidget *parent) :
|
||||||
break;
|
break;
|
||||||
case AdbProcess::AER_ERROR_EXEC:
|
case AdbProcess::AER_ERROR_EXEC:
|
||||||
//log = m_adb.getErrorOut();
|
//log = m_adb.getErrorOut();
|
||||||
|
if (args.contains("ifconfig") && args.contains("wlan0")){
|
||||||
|
getIPbyIp();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case AdbProcess::AER_ERROR_MISSING_BINARY:
|
case AdbProcess::AER_ERROR_MISSING_BINARY:
|
||||||
log = "adb not find";
|
log = "adb not find";
|
||||||
break;
|
break;
|
||||||
case AdbProcess::AER_SUCCESS_EXEC:
|
case AdbProcess::AER_SUCCESS_EXEC:
|
||||||
//log = m_adb.getStdOut();
|
//log = m_adb.getStdOut();
|
||||||
QStringList args = m_adb.arguments();
|
|
||||||
if (args.contains("devices")) {
|
if (args.contains("devices")) {
|
||||||
QStringList devices = m_adb.getDevicesSerialFromStdOut();
|
QStringList devices = m_adb.getDevicesSerialFromStdOut();
|
||||||
ui->serialBox->clear();
|
ui->serialBox->clear();
|
||||||
|
@ -59,6 +62,13 @@ Dialog::Dialog(QWidget *parent) :
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ui->deviceIpEdt->setText(ip);
|
ui->deviceIpEdt->setText(ip);
|
||||||
|
} else if (args.contains("ip -o a")) {
|
||||||
|
QString ip = m_adb.getDeviceIPByIpFromStdOut();
|
||||||
|
if (ip.isEmpty()) {
|
||||||
|
log = "ip not find, connect to wifi?";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ui->deviceIpEdt->setText(ip);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -285,6 +295,20 @@ void Dialog::on_getIPBtn_clicked()
|
||||||
m_adb.execute(ui->serialBox->currentText().trimmed(), adbArgs);
|
m_adb.execute(ui->serialBox->currentText().trimmed(), adbArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Dialog::getIPbyIp()
|
||||||
|
{
|
||||||
|
if (checkAdbRun()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QStringList adbArgs;
|
||||||
|
adbArgs << "shell";
|
||||||
|
adbArgs << "ip -o a";
|
||||||
|
|
||||||
|
m_adb.execute(ui->serialBox->currentText().trimmed(), adbArgs);
|
||||||
|
}
|
||||||
|
|
||||||
void Dialog::on_wirelessDisConnectBtn_clicked()
|
void Dialog::on_wirelessDisConnectBtn_clicked()
|
||||||
{
|
{
|
||||||
if (checkAdbRun()) {
|
if (checkAdbRun()) {
|
||||||
|
|
|
@ -22,6 +22,7 @@ public:
|
||||||
|
|
||||||
void outLog(const QString& log, bool newLine = true);
|
void outLog(const QString& log, bool newLine = true);
|
||||||
bool filterLog(const QString & log);
|
bool filterLog(const QString & log);
|
||||||
|
void getIPbyIp();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_updateDevice_clicked();
|
void on_updateDevice_clicked();
|
||||||
|
|
|
@ -25,7 +25,7 @@ void KeepRadioWidget::setWidget(QWidget *w)
|
||||||
|
|
||||||
void KeepRadioWidget::setWidthHeightRadio(float widthHeightRadio)
|
void KeepRadioWidget::setWidthHeightRadio(float widthHeightRadio)
|
||||||
{
|
{
|
||||||
if (abs(m_widthHeightRadio - widthHeightRadio) < 0.000001f) {
|
if (fabs(m_widthHeightRadio - widthHeightRadio) < 0.000001f) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_widthHeightRadio = widthHeightRadio;
|
m_widthHeightRadio = widthHeightRadio;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue