如何解决使用ADB控制通话麦克风静音时的Intent解析报错问题
问题原因
你执行的命令使用的android.media.action.MICROPHONE_MUTE_CHANGED是系统用于通知应用麦克风静音状态变化的广播Action,不属于可启动的Activity Action,用am start(专门用于启动Activity的命令)调用自然会找不到对应的组件,触发报错。
可行解决方案
下面提供3种可直接用adb实现通话麦克风静音/取消静音的方案,按易用性排序:
- 方案1:触发系统静音快捷键(推荐,无需额外权限)
单次执行命令即可切换静音状态,通话场景下默认控制通话麦克风:
按一次开启静音,再按一次恢复正常。adb shell input keyevent KEYCODE_MUTE - 方案2:直接修改通话流音量状态
首先可查询当前通话流(stream值为0)的音量和静音状态:
执行静音操作:adb shell media volume --show --stream 0
取消静音时直接设置到对应音量即可,示例为设置到最大音量(不同设备音量上限不同,可自行调整数值):adb shell media volume --set 0 --stream 0adb shell media volume --set 100 --stream 0 - 方案3:调用AudioManager接口修改状态(适合需要精准控制的场景)
可以通过adb执行shell代码调用系统服务直接修改静音状态:
开启静音:
取消静音:adb shell service call audio 10 i32 0 i32 1adb shell service call audio 10 i32 0 i32 0
注意事项
Android 10及以上版本的部分设备,执行音频修改类命令无效果时,可以先给shell授予音频设置修改权限:
adb shell appops set com.android.shell android:WRITE_MEDIA_AUDIO_SETTINGS allow
内容的提问来源于stack exchange,提问作者Junguk Lee
相关产品推荐
相关产品推荐

