如何生成各类测试MMS并发送至Android模拟器用于应用调试?
生成并发送各类MMS到Android模拟器的方法
一、通过ADB直接操作模拟器的MMS内容提供者
Android模拟器的MMS数据存储在content://mms和content://mms/part两个Content URI下,无需真实发送流程,直接通过adb插入记录即可快速测试各类MMS。
1. 创建MMS主记录并获取ID
执行以下adb命令插入一条MMS主记录,返回的ID需记下来(示例中假设为123),后续附件将通过该ID关联:
adb shell content insert --uri content://mms --bind thread_id:i:1 --bind msg_box:i:1 --bind read:i:0 --bind date:s:$(date +%s000)
thread_id:i:1:固定对话线程ID,方便归类测试内容msg_box:i:1:指定为收件箱(1=收件箱,2=发件箱)read:i:0:标记为未读状态date:s:$(date +%s000):使用当前毫秒级时间戳
2. 添加不同类型的MMS附件(内嵌/引用)
每个附件对应content://mms/part中的一条记录,通过mid字段关联到主MMS ID。
(1)内嵌MP3音频
先将本地MP3文件推送到模拟器存储:
adb push your_audio.mp3 /sdcard/mms_test/audio.mp3
再插入音频附件记录:
adb shell content insert --uri content://mms/part --bind mid:i:123 --bind part_type:s:audio/mpeg --bind data:/sdcard/mms_test/audio.mp3 --bind text:s:内嵌MP3测试 --bind disp:s:inline
part_type:s:audio/mpeg:MP3对应的MIME类型disp:s:inline:标记为内嵌内容,若设为attachment则作为附件展示
(2)内嵌视频文件
推送视频文件到模拟器:
adb push your_video.mp4 /sdcard/mms_test/video.mp4
插入视频附件记录:
adb shell content insert --uri content://mms/part --bind mid:i:123 --bind part_type:s:video/mp4 --bind data:/sdcard/mms_test/video.mp4 --bind text:s:内嵌MP4测试 --bind disp:s:inline
不同视频格式对应不同MIME类型:3GP用video/3gpp,AVI用video/avi,可按需替换。
(3)引用外部视频(URL形式)
无需推送文件,直接插入引用类型的附件记录:
adb shell content insert --uri content://mms/part --bind mid:i:123 --bind part_type:s:text/plain --bind text:s:https://example.com/test_video.mp4 --bind disp:s:attachment --bind ct_l:s:video/mp4
ct_l:s:video/mp4:指定引用内容的MIME类型text字段存储外部视频URL,disp:s:attachment标记为引用附件
(4)添加SMIL控制内容(可选)
若需测试SMIL格式的多媒体展示逻辑,插入SMIL类型的附件:
adb shell content insert --uri content://mms/part --bind mid:i:123 --bind part_type:s:application/smil --bind text:s:'<smil><head><layout><root-layout width="320" height="480"/><region id="video" left="0" top="0" width="320" height="320"/><region id="audio" left="0" top="320" width="320" height="160"/></layout></head><body><par dur="10000"><video src="video.mp4" region="video"/><audio src="audio.mp3" region="audio"/></par></body></smil>' --bind disp:s:inline
这段SMIL代码定义了视频、音频的展示区域和同步播放时长。
3. 触发短信应用刷新
插入完成后,发送广播通知短信应用加载新MMS:
adb shell am broadcast -a android.intent.action.MMS_RECEIVED --es mms-id 123
二、模拟器短信应用手动发送(模拟真实流程)
若需测试真实发送逻辑,可按以下步骤操作:
- 打开模拟器自带短信应用,新建MMS
- 点击附件按钮,选择从存储添加已推送的MP3、视频文件
- 对于引用内容,直接在文本框输入视频URL,部分短信应用会自动识别为引用附件
- 输入模拟器自身号码(如
5554)发送即可
三、测试注意事项
- 推送文件前,用
adb shell df确认模拟器存储有足够空间 - 不同Android版本的Content Provider字段可能有差异,若命令报错,可尝试将
msg_box替换为box - 覆盖常见MIME类型测试:MP3、AAC(
audio/aac)、MP4、3GP等 - 区分
inline(内嵌)和attachment(附件)模式,确保应用能正确处理两种展示逻辑
内容的提问来源于stack exchange,提问作者Alex161
相关产品推荐
相关产品推荐

