当前位置:   article > 正文

ADB获取手机APP当前活动的应用包名_adb获取当前打开的app的包名

adb获取当前打开的app的包名

ADB获取手机APP当前活动的应用包名

使用前置条件:
1、安装ADB环境
2、连接真机或者模拟器

方法1:

import subprocess
import re
import os
# 执行 adb 命令获取窗口信息
adb_command = 'adb shell dumpsys window'
process = subprocess.Popen(adb_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, _ = process.communicate()
# 使用正则表达式提取包名
pattern = r'mCurrentFocus.*?u0\s+(\S+)/\S+'
match = re.search(pattern, output.decode())
if match:
    package_name = match.group(1)
    print("APP包名:", package_name)
else:
    print("没有获取到APP包名.")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

#方法二

result = os.popen(adb_command).read()
# print(result)
pattern = r'mCurrentFocus.*?u0\s+(\S+)/\S+'
match = re.search(pattern, result)
if match:
    package_name = match.group(1)
    print("APP包名:", package_name)
else:
    print("没有获取到APP包名.")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  1. 在这个代码片段中,subprocess.Popen函数被用于执行adb_command命令,并设置了一些参数来控制子进程的行为和输出。
    下面是这些参数的作用
    shell=True: 这个参数指示Popen在执行命令时使用系统的默认shell。它允许使用shell特性,如管道、重定向和通配符等。当您需要执行复杂的shell命令时,可以将其设置为True。不过,请注意,使用shell=True也可能带来一些安全风险,因此在处理不受信任的输入时要小心[^2]。
    stdout=subprocess.PIPE: 这个参数将子进程的标准输出重定向到一个管道中。通过设置为subprocess.PIPE,您可以捕获子进程的输出,并在父进程中进行处理。您可以使用process.stdout属性来访问子进程的标准输出
    stderr=subprocess.PIPE: 这个参数将子进程的标准错误输出重定向到一个管道中。通过设置为subprocess.PIPE,您可以捕获子进程的错误输出,并在父进程中进行处理。您可以使用process.stderr属性来访问子进程的标准错误输出。
    通过将stdout和stderr设置为subprocess.PIPE,您可以通过process.stdout和process.stderr属性读取子进程的输出和错误信息。这使得您能够在父进程中捕获和处理命令的输出和错误,例如将其存储到变量中、进行日志记录或进行进一步的处理。1 ↩︎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/805237
推荐阅读
相关标签
  

闽ICP备14008679号