如何获得某个Window画面所属包名packageName和用户userId

news2024/11/24 12:23:56

在安卓上获得某个Window画面所属包名packageName和用户userId的方法

1,用到的工具如下:

adb
androidSDK里的monitor工具
adb shell dumpsys window animator
adb shell dumpsys window命令
jdk 1.8

已在安卓14模拟器上测试通过。
以AOSP的launcher中的map图层为例,如何确认map图层所属包名和用户?
在这里插入图片描述

实施步骤如下。

1),首先用androidSDK里带的monitor工具,查看对应window名称

(建议本地jdk版本是java1.8,否则可能打开失败)

java -version输出如下:
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-8u412-ga-1~22.04.1-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)

打开monitor工具:
sdk/tools/lib/monitor-x86_64/monitor目录下打开monitor工具: ./monitor

打开monitor ui界面后,点击右上角的Hierarchy View功能,在左侧的windows列表中,逐个确认和对比你想要查看的UI,确认下图里编号4的画面是否是你想要的UI画面。
在这里插入图片描述
在这里插入图片描述
我们可以看到,这个UI图层跟我们在真实设备上的UI一模一样,这就是我们需要的图层。
看左边的列表,可以看到window名称为:
com.android.car.mapsplaceholder/com.android.car.mapsplaceholder.MapsPlaceholderActivity

2,通过dumpsys window animator命令,查看window对象的hash

adb shell dumpsys window animator

WINDOW MANAGER ANIMATOR STATE (dumpsys window animator)
    Display{#8 state=ON size=968x692 ROTATION_0}:
      Window #0: WindowStateAnimator{dbae469 com.android.car.cluster.home/com.android.car.cluster.home.ClusterHomeActivity}
      Window #1: WindowStateAnimator{c616eee com.android.car.cluster.home/com.android.car.cluster.home.FakeFreeNavigationActivity}

    Display{#1 state=ON size=968x792 ROTATION_0}:
      Window #0: WindowStateAnimator{f5cef8f com.android.car.cluster.osdouble/com.android.car.cluster.osdouble.ClusterOsDoubleActivity}

    Display{#3 state=ON size=1408x792 ROTATION_0}:
      Window #0: WindowStateAnimator{329c21c com.android.systemui/com.android.systemui.car.userpicker.UserPickerActivity}
      Window #1: WindowStateAnimator{f945e25 InputMethod}

    Display{#2 state=ON size=1408x792 ROTATION_0}:
      Window #0: WindowStateAnimator{c798bfa com.android.car.multidisplay/com.android.car.multidisplay.launcher.LauncherActivity}
      Window #1: WindowStateAnimator{5c2f5ab InputMethod}
      Window #2: WindowStateAnimator{81ee408 SystemUIOverlayWindow}
      Window #3: WindowStateAnimator{4d1b7a1 HeadsUpNotification}
      Window #4: WindowStateAnimator{ac46dc6 BottomCarSystemBar}
      Window #5: WindowStateAnimator{c394187 ScreenDecorOverlay}
      Window #6: WindowStateAnimator{bc238b4 ScreenDecorOverlayBottom}

    Display{#0 state=ON size=1848x792 ROTATION_0}:
      Window #0: WindowStateAnimator{e312cdd com.google.android.car.kitchensink/com.google.android.car.kitchensink.KitchenSinkActivity}
      Window #1: WindowStateAnimator{689a052 com.android.car.radio/com.android.car.radio.RadioActivity}
      Window #2: WindowStateAnimator{8de6f23 com.android.car.carlauncher/com.android.car.carlauncher.CarLauncher}
      Window #3: WindowStateAnimator{4a42c20 com.android.car.mapsplaceholder/com.android.car.mapsplaceholder.MapsPlaceholderActivity}
      Window #4: WindowStateAnimator{18b9d9 InputMethod}
      Window #5: WindowStateAnimator{9fd6f9e ShellDropTarget}
      Window #6: WindowStateAnimator{b1eda7f }
      Window #7: WindowStateAnimator{fefea4c TopCarSystemBar}
      Window #8: WindowStateAnimator{5521a95 SystemUIOverlayWindow}
      Window #9: WindowStateAnimator{c4ce7aa HeadsUpNotification}
      Window #10: WindowStateAnimator{2d09f9b BottomCarSystemBar}
      Window #11: WindowStateAnimator{575f38 ScreenDecorOverlay}
      Window #12: WindowStateAnimator{186cb11 ScreenDecorOverlayBottom}


    mCurrentTime=433030 (321127 ms ago)

我们可以看到com.android.car.mapsplaceholder/com.android.car.mapsplaceholder.MapsPlaceholderActivity对应的hash号为4a42c20

      Window #3: WindowStateAnimator{4a42c20 com.android.car.mapsplaceholder/com.android.car.mapsplaceholder.MapsPlaceholderActivity}

3,通过dumpsys window命令,查看4a42c20 window对应的userId和包名

adb shell dumpsys window >~/dump_window.txt
查看4a42c20 window对应的dump信息,我们可以看到u10和package=com.android.car.mapsplaceholder信息。

  Window #9 Window{85b2366 u10 com.android.car.mapsplaceholder/com.android.car.mapsplaceholder.MapsPlaceholderActivity}:
    mDisplayId=0 rootTaskId=1000031 mSession=Session{a67f8cb 4470:u10a10134} mClient=android.os.BinderProxy@aa13fc1
    mOwnerUid=1010134 showForAllUsers=false package=com.android.car.mapsplaceholder appop=NONE
    mAttrs={(0,0)(fillxfill) sim={adjust=pan forwardNavigation} ty=BASE_APPLICATION wanim=0x10302fe
      fl=LAYOUT_IN_SCREEN LAYOUT_INSET_DECOR SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
      pfl=NO_MOVE_ANIMATION FORCE_DRAW_STATUS_BAR_BACKGROUND USE_BLAST FIT_INSETS_CONTROLLED
      bhv=DEFAULT
      fitSides=}
    Requested w=1444 h=620 mLayoutSeq=277
    mHasSurface=true isReadyForDisplay()=true mWindowRemovalAllowed=false
    WindowStateAnimator{4a42c20 com.android.car.mapsplaceholder/com.android.car.mapsplaceholder.MapsPlaceholderActivity}:
      Surface: shown=true layer=0 alpha=1.0 rect=(0.0,0.0)  transform=(1.0, 0.0, 0.0, 1.0)
    mForceSeamlesslyRotate=false seamlesslyRotate: pending=null    isOnScreen=true
    isVisible=true
    keepClearAreas: restricted=[], unrestricted=[]
    mPrepareSyncSeqId=0

最终获得我们需要的信息,User是10,packageName是com.android.car.mapsplaceholder

--------------------------------------------------End line-----------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos适配达梦数据库并制作镜像

背景:因项目需要信创,需将原本的mysql数据库,改成达梦数据库 一、部署达梦数据库 1.1 部署达梦数据库服务 可参考:Docker安装达梦数据库_达梦数据库docker镜像-CSDN博客 1.2 创建nacos数据库 create user SAFE_NACOS identifi…

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数: import pygame import time import random 游戏源码: import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…

【秋招突围】2024届秋招笔试-美团笔试题-第一套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新 美团 春秋招笔试题**汇总~ 👏 感谢大家的订阅➕ 和 喜欢💗 01.LYA 的音乐播放列表 问题描述 LYA 有一个包含 n n n 首歌曲的音乐播放列表,歌曲编号从 1 1

护网紧急情况应对指南:Linux 应急响应手册

继上一篇:护网紧急情况应对指南:Windows版v1.2全新升级版 之后 收到小伙伴后台要Linux应急手册,今天给大家安排上。 《Linux应急手册》是一本为Linux系统管理员和运维工程师量身打造的实用指南,旨在帮助他们快速应对各种突发状况…

电测量数据交换DLMSCOSEM组件第10部分:智能测量标准化框架

1.GB/T 17215.6XY系列 IEC 62056 DLMS/COSEM组件标准已经由IEC/TC 13完成制定,用于电测量的目的。有些标准——特别是COSEM数据模型——也已经被其他非电量测量的技术委员会使用。IEC62056-X-Y系列标准对应转换国标GB/T 17215.6XY系列(电测量数据交换DLMSCOSEM组件)。如下图…

Electron的入门介绍与使用(1)共30节

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 入门指南​ Electron 是网页应用 …

repo 工具安装和使用教程(windows+gitee)

repo是什么 官方的定义:Repo是谷歌用python脚本写的调用git的一个脚本,可以实现管理多个git库。 Android的源代码使用Repo 命令行工具来管理多个git仓库,大概有百多个。要想克隆和管理百多个 Git 仓库,不是一件简单的事情。Repo 命…

Java集合——HashMap的底层实现

HashMap将数据以键值对的形式存储,是线程不安全的(即在多线程中若不用concurrentHashMap会导致结果错误)。 // concurrentHashMap编程示例 import java.util.Map; import java.util.concurrent.ConcurrentHashMap;public class HashMapThrea…

快手电商Android一面凉经(2024)

快手电商Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《快手电商Android一面凉经(2024)》。 面试职位: Android工程师 技术一面 面试形式…

新手小白的pytorch学习第十四弹------十一、十二、十三弹卷积神经网络CNN的习题

习题编号目录 No 1No 2No 3No 4No 5No 6No 7No 8No 9No 10No 11No 12No 13 练习题主要就是 写代码,所以这篇文章大部分是代码哟~ No 1 What are 3 areas in industry where computer vision is currently being used? No 2 工业异常检测,目标检测 Sea…

C语言 -- sizeof和strlen的用法

C语言 -- sizeof和strlen的用法 1. sizeof和strlen的对比​1.1 sizeof​1.2 strlen​1.3 sizeof 和 strlen的对比​ 2. 数组和指针笔试题解析2.1 一维数组​2.2 字符数组​2.3 二维数组 3. 指针运算笔试题解析3.1 题目1:3.2 题目2​3.3 题目3​3.4 题目4​3.5 题目5…

力扣高频SQL 50题(基础版)第十九题

文章目录 力扣高频SQL 50题(基础版)第十九题1211. 查询结果的质量和占比题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题(基础版)第十九题 1211. 查询结果的质量和占比 题目说明 Queries 表: …

学习c语言第十五天(初阶测评)

选择题 1.下列程序输出结果为 67 2.下列程序输出结果为 死循环打印 3.i 和j的值分别为什么 2 1 4.k的终值是什么 90 5.输出结果是什么 1 6.正确的是 C 7. C语言规定main函数位置 C 8.不正确的是 D 9.正确的是 c 库函数独立c语言之外 10…

comsol在静水压力下的地应力平衡

comsol在静水压力下的地应力平衡 条件: 水深3m,粗砂层厚度10m,模型长度100m土体的饱和密度1950kg/m3水的密度1000kg/m3浮重度 γ ′ = γ s a t − γ w \gamma=\gamma_{sat}-\gamma_w γ

GD32 PWM输入捕获

前言 通过本次的学习,了解定时器的分类和配置,高级定时器,通用定时器等不同等级的定时器拥有的功能,学习定时器的输入捕获与输出比较功能(PWM)脉冲宽度调制,来控制电机等外设。 定义 定时器的分…

Pytorch学习笔记——在GPU上进行训练

文章目录 1. 环境准备2. 导入必要库3. 加载数据集4. 定义简单的神经网络模型5. 检查和设置GPU设备6. 定义损失函数和优化器7. 训练模型8. 全部代码展示及运行结果 1. 环境准备 首先,确保PyTorch已经安装,且CUDA(NVIDIA的并行计算平台和编程模…

go-kratos 学习笔记(6) 数据库gorm使用

数据库是项目的核心,数据库的链接数据是data层的操作,选择了比较简单好用的gorm作为数据库的工具;之前是PHP开发,各种框架都是orm的操作;gorm还是很相似的,使用起来比较顺手 go-kratos官网的实例是ent&…

鸿蒙UI系统组件10——菜单(Menu)

果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下面名片,关注公众号。 Menu是菜单接口,一般用于鼠标右键弹窗、点击弹窗等。 1、创建默认样式的菜单 菜单需要调用bindMenu接口来实现。bindMenu响应绑定组件的点击事件&am…

ModuleNotFoundError: No module named ‘py3langid‘ 以及如何将包安在虚拟环境下

前提:已经安装过改包(pip install py3langid),但仍报错 原因:安装在其他目录下了 解决办法: 1、再次在终端输入pip install py3langid 显示安装位置 Requirement already satisfied: py3langid in c:\…

css大屏设置中间元素四周渐变透明效果

css大屏设置中间元素四周渐变透明效果 四周透明效果: // 设置蒙版上下左右渐变显示mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 10%, rgba(0, 0, 0, 1) 90%, rgba(0, 0, 0, 0) 100%),linear-gradient(to bottom, rgba(0, 0, 0…