应用相关操作¶
列出已安装的应用¶
获取设备上所有已安装应用的 package ID。
d.enumerate_all_pkg_names()
列出正在运行的应用¶
获取系统上当前正在运行的应用相关信息。
d.enumerate_running_processes()
根据应用的名称获取应用¶
使用应用的常用名来获取应用实例(不清楚 Package ID)。
# 7.75 版本引入
d.get_application_by_name("微信")
d.get_application_by_name("设置")
根据应用ID获取应用¶
使用应用的 Package ID 来获取应用实例。
d.application("com.tencent.mm")
d.application("com.android.settings")
获取处于前台的应用¶
获取当前正在前台运行的应用实例。
d.current_application()
# 等价于
d.application(d.current_application().applicationId)
# 获取当前前台的 activity
d.current_application().activity
多开应用¶
获取多开应用的实例(通常情况下,多开应用通过 user 区分并且UID为999)。
# 多开应用通常运行于 999 用户名下
d.application("com.my.app", user=999)
发起或获取应用活动¶
发起系统 Activity,或者获取系统中最近启动的 Activity。
# 导入 FLAG_ACTIVITY* 常量定义
from lamda.const import *
# 获取系统中最近的5条活动(最多12条)
activities = d.get_last_activities(count=5)
print (activities)
# 你可以直接重放最后一条活动(注意并不是所有活动都可以重放)
activity = activities[-1]
print (activity)
d.start_activity(**activity)
# 指定启动多开应用的活动
d.start_activity(**activity, user=999)
# 手动组装 activity 信息
# 附加数据只支持 boolean, int, short, long, double, float 以及 string 类型
d.start_activity(action="***", category="***", component="***",
extras={"boolean": False, "int": 1, "string": "act", "float": 1.123},
flags=FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_CLEAR_TASK,
data="***", debug=False)
# flags 的定义请参考文档
# https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT
# flags 以及 debug 参数不是必须的,只是多了一种可能
# 拨打 10000 客服电话
d.start_activity(action="android.intent.action.CALL", data="tel:10000")
# debug 参数代表:是否以调试模式启动该活动
# 如果你知道 Waitting for debugger,那么它可能对你有用
# 你可以像下面这样以调试模式启动一个应用(你的设备或者APP需要是可调试的)
la = d.application("com.android.settings").query_launch_activity()
d.start_activity(**la, debug=True)
# 例如:启动 设置 APP(当然这几乎等价于直接启动app)
d.start_activity(action="android.intent.action.MAIN",
category="android.intent.category.LAUNCHER",
component="com.android.settings/.Settings")
# 例如:进入证书设置
d.start_activity(action="com.android.settings.TRUSTED_CREDENTIALS")
授予撤销权限¶
撤销或者授予应用的相关权限(如相册读取等权限)。
# 注意,你应在APP未启动时进行权限设置,在APP请求权限时调用并不会产生帮你点击允许的效果。
app = d.application("com.my.app")
#导入 PERMISSION_READ_PHONE_STATE 常量(版本>3.90)
from lamda.const import *
# 获取应用所有权限
app.permissions()
# 授予 READ_PHONE_STATE 权限
app.grant(PERMISSION_READ_PHONE_STATE, mode=GrantType.GRANT_ALLOW)
# 拒绝 READ_PHONE_STATE 权限
app.grant(PERMISSION_READ_PHONE_STATE, mode=GrantType.GRANT_DENY)
# 检查是否已授予权限
app.is_permission_granted(PERMISSION_READ_PHONE_STATE)
# 撤销已授予的权限
app.revoke(PERMISSION_READ_PHONE_STATE)
清除缓存及重置¶
清除应用的缓存信息,或者清空应用的数据(重置)。
# 删除应用的缓存数据
app = d.application("com.my.app")
app.delete_cache()
# 重置应用数据
app.reset_data()
启动停止应用¶
启动或者停止相关应用。
app = d.application("com.my.app")
# 启动应用
app.start()
# 检查应用是否正在前台运行
app.is_foreground()
# 关闭应用
app.stop()
其他相关方法¶
获取应用信息、卸载、禁用应用等相关方法。
app = d.application("com.my.app")
# 获取应用信息
app.info()
# 检查应用是否已安装
app.is_installed()
# 卸载应用
app.uninstall()
# 查询该应用的启动 Activity(入口活动)
app.query_launch_activity()
# 启用应用
app.enable()
# 禁用应用
app.disable()