折腾:
【已解决】搞清楚安卓手机中多款浏览器应用的包名
期间,希望用uiautomator2去获取到当前正在运行的app的包名等信息
另外,也可以借用uiautomator2
代码:
d.app_list_running() # expect output # ["com.xxxx.xxxx", "com.github.uiautomator", "xxxx"]
去试试:
先打开某个应用
还是选默认的浏览器吧:

然后用上述代码看看结果
activeAppList = d.app_list_running() print("activeAppList=%s" % activeAppList)

输出:
activeAppList=['com.xiaomi.bluetooth', 'com.miui.video', 'com.tencent.mm', 'com.sohu.inputmethod.sogou.xiaomi', 'com.miui.gallery', 'com.miui.systemAdSolution', 'com.mediatek.ims', 'com.xiaomi.finddevice', 'com.miui.core', 'com.mfashiongallery.emag', 'com.android.providers.calendar', 'com.android.thememanager', 'com.android.settings', 'com.android.smspush', 'com.miui.weather2', 'com.android.se', 'com.android.phone', 'com.android.systemui', 'com.android.browser', 'com.android.camera', 'com.goodix.fingerprint.setting', 'com.xiaomi.xmsf', 'com.miui.daemon', 'com.android.htmlviewer', 'com.miui.securitycenter', 'com.mediatek.voicecommand', 'com.xiaomi.mi_connect_service', 'com.mediatek.voicecommand.vis', 'com.miui.face', 'com.miui.mishare.connectivity', 'com.xiaomi.location.fused', 'com.miui.analytics', 'com.miui.voicetrigger', 'com.miui.contentcatcher', 'com.lbe.security.miui', 'com.miui.home', 'com.xiaomi.misettings', 'com.modemdebug', 'com.miui.miwallpaper', 'com.android.bluetooth', 'com.xiaomi.bsp.gps.nps', 'com.tencent.soter.soterserver', 'com.xiaomi.metoknlp', 'com.miui.powerkeeper', 'com.miui.wmsvc', 'com.miui.personalassistant', 'com.miui.aod', 'com.miui.dmregservice', 'com.xiaomi.simactivate.service', 'com.xiaomi.joyose', 'com.android.quicksearchbox', 'com.xiaomi.market', 'com.xiaomi.mircs', 'com.xiaomi.xmsfkeeper', 'com.github.uiautomator']
其中一个是:
正在打开的:
‘com.android.browser’
-》但是还是不够明显
所以去:
【未解决】用uiautomator2和weditor获取当前运行的app的包名等信息
通过看代码:
/Users/crifan/.pyenv/versions/3.6.6/lib/python3.6/site-packages/uiautomator2/__init__.py

def app_info(self, package_name: str): """ Get app info Args: package_name (str): package name Return example: { "mainActivity": "com.github.uiautomator.MainActivity", "label": "ATX", "versionName": "1.1.7", "versionCode": 1001007, "size":1760809 } Raises: UiaError """ resp = self.http.get(f"/packages/{package_name}/info") resp.raise_for_status() resp = resp.json() if not resp.get('success'): raise BaseError(resp.get('description', 'unknown')) return resp.get('data')
去试试:

curAppInfo = d.app_info()
结果不行,必须指定报名

“current: 获取当前包名和activity
$ uiautomator2 current
{
“package”: “com.android.browser”,
“activity”: “com.uc.browser.InnerUCMobile”,
“pid”: 28478
}
”
去写代码:

curApp = d.current_app print("curApp=%s" % curApp)
结果:

输出:
curApp=<bound method _DeprecatedMixIn.current_app of <uiautomator2.Device object at 0x10843f780>>
去看了看代码
/Users/crifan/.pyenv/versions/3.6.6/lib/python3.6/site-packages/uiautomator2/__init__.py
@deprecated(version="3.0.0", reason="You should use app_current instead") def current_app(self): return self.app_current()
再去试试:
curApp = d.app_current()
结果:

终于可以了,输出了:
curApp={'package': 'com.android.browser', 'activity': '.BrowserActivity', 'pid': 20194}
另外,去输出另外几个app的信息
【总结】
- 小米 内置浏览器
- 图
- 信息
- {‘package’: ‘com.android.browser’, ‘activity’: ‘.BrowserActivity’, ‘pid’: 20194}
- Edge
- 图
- 信息
- curApp={‘package’: ‘com.microsoft.emmx’, ‘activity’: ‘org.chromium.chrome.browser.ChromeTabbedActivity’, ‘pid’: 21340}
- Firefox
- 图
- 信息
- curApp={‘package’: ‘org.mozilla.firefox’, ‘activity’: ‘org.mozilla.fenix.HomeActivity’, ‘pid’: 21817}
- UC浏览器
- 图
- 信息
- curApp={‘package’: ‘com.UCMobile’, ‘activity’: ‘com.uc.browser.InnerUCMobile’, ‘pid’: 22173}
- QQ浏览器
- 图
- 信息
- curApp={‘package’: ‘com.tencent.mtt’, ‘activity’: ‘.MainActivity’, ‘pid’: 24304}