最新消息:20210917 已从crifan.com换到crifan.org

【已解决】用uiautomator2获取当前运行的app的包名等信息

uiautomator2 crifan 1300浏览 0评论
折腾:
【已解决】搞清楚安卓手机中多款浏览器应用的包名
期间,希望用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()
结果不行,必须指定报名
https://github.com/openatx/uiautomator2
“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}

转载请注明:在路上 » 【已解决】用uiautomator2获取当前运行的app的包名等信息

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.181 seconds, using 23.32MB memory