You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过Android ADB在非默认浏览器中打开指定网址

如何通过ADB在指定第三方浏览器中打开网页?

刚好遇到过类似的需求,我来教你怎么解决这个问题!你现在的代码会默认调用系统默认浏览器(比如Chrome)打开网址,这是因为am start命令在没有指定目标应用时,会自动选择匹配android.intent.action.VIEW意图的默认应用。要指定Firefox或其他第三方浏览器,只需要在命令里明确指定目标应用的包名或者组件名就行。

第一步:获取目标浏览器的包名

你可以通过ADB命令快速查看设备上已安装浏览器的包名:

adb shell pm list packages | grep firefox

比如Firefox的包名通常是org.mozilla.firefox,Chrome是com.android.chrome,微软Edge是com.microsoft.emmx,国内的QQ浏览器则是com.tencent.mtt

第二步:修改ADB命令指定浏览器

有两种靠谱的方式指定目标应用:

方式一:用-p参数指定包名(简单省心)

这个参数会让系统优先用指定包名下的应用来处理打开网页的意图,命令格式如下:

am start -a android.intent.action.VIEW -d https://smartbear.com/ -p org.mozilla.firefox

方式二:用-n参数指定完整组件名(适配特殊情况)

如果-p参数不生效(比如某些定制ROM),可以直接指定浏览器的主Activity组件(包名+Activity类名),比如Firefox的主Activity是org.mozilla.firefox/.App

am start -a android.intent.action.VIEW -d https://smartbear.com/ -n org.mozilla.firefox/.App

修改后的Python代码示例

把原来的device.shell()命令替换成上面的指定版本就行,这里以Firefox为例:

import time
from ppadb.client import Client as AdbClient

client = AdbClient(host="127.0.0.1", port=5037)
devices = client.devices()

if len(devices) == 0:
    print('no device attached')
    quit()

device = devices[0]
# 用-p参数指定Firefox打开网址
device.shell('am start -a android.intent.action.VIEW -d https://smartbear.com/ -p org.mozilla.firefox')

# 如果你需要用-n参数的版本,注释上面一行,解开下面的注释
# device.shell('am start -a android.intent.action.VIEW -d https://smartbear.com/ -n org.mozilla.firefox/.App')

小提醒

  • 如果指定的浏览器没装在设备上,执行命令会报错,你可以先通过ADB安装目标浏览器,或者在代码里加个判断逻辑。
  • 不同浏览器的组件名可能有变化,要是不确定,可以用adb shell dumpsys package <包名>命令查看该应用的主Activity信息。

内容的提问来源于stack exchange,提问作者ChatGPT

火山引擎 最新活动