如何通过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




