Android下am和pm命令简介

1、am命令浅析

1.1am启动指定Activity

am startpackageName/packageName.activityName

示例:adb shell am startcom.android.browser/.BrowserActivity

1.2加参数-S,实现先强制关掉目标app再启动Activity

am start -SpackageName/packageName.activityName

示例:adb shell am start -Scom.android.browser/.BrowserActivity

2、pm命令浅析

2.1列出已安装应用的包

pm list package

2.2列出安装包的信息信息

pm list package -f

2.3查看系统应用包

pm list package -s

2.4查看系统非应用包

pm list package -3

2.5查看应用报及对应的安装者信息

pm list package -i

2.6查看包的安装位置

pm pathpackageName

2.7安装包

pm installapkName(注意apk路径必须是shell中的路径)

2.8卸载包

pm uninstallpackageName

pm uninstallpackageName -k(保留数据卸载)

2.9清除应用的所有的数据

pm clearpackageName

2.10列出危险权限

pm listpermissions -d

2.11列出测试包的信息

pm listinstrumentation

### ADB 命令中 `am` `pm` 的含义、功能及用法 #### 1. `am` 的含义与功能 `am` 是 Android Debug Bridge (ADB) 中的命令,代表 `Activity Manager`。它主要用于管理 Android 系统中的 Activity、广播接收器、服务等组件。通过 `am` 命令可以启动或停止应用的特定组件,发送广播消息,设置调试标志等[^4]。 **主要功能:** - 启动指定的应用程序及其主 Activity。 - 发送广播消息给应用程序。 - 设置或清除调试标志。 **常用命令示例:** ```bash # 启动指定的应用程序及其主 Activity adb shell am start -n com.example.app/.MainActivity # 启动应用程序并传递额外的数据 adb shell am start -n com.example.app/.MainActivity -e key value # 发送广播消息 adb shell am broadcast -a android.intent.action.BOOT_COMPLETED ``` #### 2. `pm` 的含义与功能 `pm` 是 ADB 中的另一个重要命令,代表 `Package Manager`。它是 Android 系统中用于管理应用程序包的工具,负责安装、卸载、查询包信息等操作[^3]。 **主要功能:** - 安装卸载应用程序。 - 查询设备上已安装的应用程序包名。 - 获取系统或第三方应用程序的详细信息。 **常用命令示例:** ```bash # 列出所有已安装的应用程序包名 adb shell pm list packages # 列出所有第三方应用程序包名 adb shell pm list packages -3 # 安装 APK 文件 adb install path/to/app.apk # 卸载应用程序 adb uninstall com.example.app # 查询指定包名的路径 adb shell pm path com.example.app ``` #### 3. `am` `pm` 的区别 - **用途不同**:`am` 主要用于管理 Android 系统中的组件(如 Activity、广播接收器、服务),而 `pm` 则专注于应用程序包的管理(如安装、卸载、查询)。 - **操作对象不同**:`am` 操作的对象是 Android 系统的组件,`pm` 操作的对象是应用程序包。 - **功能范围不同**:`am` 提供了更广泛的系统级操作能力,例如启动 Activity 或发送广播;而 `pm` 更侧重于包管理权限控制。 #### 4. 示例代码 以下是一个结合 `am` `pm` 的综合示例,展示如何获取当前活动的应用包名并启动其主 Activity: ```python import subprocess def get_current_package(): try: result = subprocess.run(['adb', 'shell', 'dumpsys', 'window', '|', 'grep', 'mCurrentFocus'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) package_name = result.stdout.split(' ')[-1].split('/')[0] return package_name except Exception as e: return f"Error: {e}" def start_main_activity(package_name): try: result = subprocess.run(['adb', 'shell', 'am', 'start', '-n', f'{package_name}/.{package_name}MainActivity'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) return result.stdout except Exception as e: return f"Error: {e}" # 示例调用 current_package = get_current_package() print(start_main_activity(current_package)) ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值