You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android模拟器间无法收发SMS问题求助

Android模拟器间无法收发SMS的排查与解决

针对你遇到的Android 13模拟器(Pixel 2、Pixel 7 Pro)之间无论用自定义应用还是内置SMS都无法收发消息的问题,以下是实用排查步骤:

1. 确认模拟器号码准确性

不要依赖固定的5554/5556,每个模拟器启动时的号码可能因启动顺序、配置变化改变:

  • 打开模拟器的「扩展控制」(窗口右侧三个点图标)→「Phone」,查看当前模拟器的准确号码
  • 或用adb命令查询:
    # 先列出设备
    adb devices
    # 替换emulator-xxx为你的设备名,查询号码
    adb -s emulator-xxx shell getprop gsmsim.phone_number
    

发送时务必使用目标模拟器的真实号码。

2. 检查模拟器网络与移动数据状态

  • 确保两个模拟器处于同一主机网络下,且模拟器的「移动数据」开关已开启(下拉状态栏确认)
  • 若模拟器显示无信号,可通过「扩展控制」→「Mobile」→「Network Type」切换为LTE/3G,再重启模拟器

3. 配置虚拟运营商

Android 13模拟器默认可能未绑定运营商,导致SMS功能异常:

  • 打开「扩展控制」→「Mobile」→「Network Operator」,选择任意运营商(如T-Mobile、AT&T)
  • 重启模拟器后再测试SMS收发

4. 排查权限问题(针对自定义应用)

虽然你物理机运行正常,但模拟器中可能未授予权限:

  • 确保Manifest中已添加权限:
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    
  • 在代码中添加动态权限申请(Android 6+必需):
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, 100);
    }
    

5. 测试模拟器本身的SMS功能

用adb命令直接触发发送,排除应用代码问题:

# 从emulator-5554发送消息到目标号码(替换为实际号码)
adb -s emulator-5554 shell am start -a android.intent.action.SENDTO -d sms:5556 --es sms_body "测试消息"

若此命令仍无法发送,说明是模拟器环境问题,可尝试:

  • 更新Android Studio模拟器到最新版本
  • 切换到Android 12(API 31)模拟器测试,排查Android 13的兼容性bug
  • 关闭模拟器的「Wi-Fi通话」功能(设置→网络和互联网→Wi-Fi通话)

6. 重置模拟器

若以上步骤无效,尝试创建新的模拟器AVD,或重置现有模拟器的用户数据:

  • 在Android Studio的Device Manager中,选中模拟器→「Wipe Data」,重置后重启测试

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:27:19