二进制数据短信在模拟器上未收到

4

我正在尝试通过我的应用程序(SDK 2.1-update 1)发送和接收二进制数据短信,但一直没有成功。

我已经在清单文件中设置了以下的接收器:

<receiver android:name=".MainReceiver">
    <intent-filter android:priority="10">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>
<receiver android:name=".MainReceiver">
    <intent-filter android:priority="10">
        <action android:name="android.intent.action.DATA_SMS_RECEIVED" />
    </intent-filter>
</receiver>

我尝试过使用数据标签和不使用数据标签来处理DATA_SMS_RECEIVED操作:

<data android:scheme="sms"/>
<data android:host="localhost"/>
<data android:port="16001"/>

我已经指定了与发送/接收/阅读短信或彩信等相关的所有权限,只是为了确保这不是权限问题。
我正在从端口5556的模拟器向端口5554的模拟器发送短信和数据短信。
5554号模拟器能够正常接收普通短信,但是它无法接收数据短信,而且收件箱中也没有任何显示。
也许它从未被发送过。这是发送短信的示例代码:
SmsManager mgr = SmsManager.getDefault();
mgr.sendTextMessage("5554", null, "message", null, null); 
mgr.sendDataMessage("5554", null, (short) 16001, "message".getBytes(), null, null);

广播接收器只有在接收到信息时才会显示 Toast 信息。
我已经花了5个小时尝试每一个可能的接收器、数据标签和端口号组合,但是没有任何数据短信被成功接收。
我真的没什么主意了。

你能否通过自己回答这个问题来关闭它? - Azlam
1个回答

1

看起来模拟器在处理数据短信方面表现不佳...它们不会抛出任何异常,但是它们不会发送数据消息。因此,sendDataMessage() 看起来工作正常,因为它不会抛出任何错误,但事实上它什么也没发送!

使用设备时,一切都运行良好!


我已经在AndroidManifest.xml文件中添加了一个接收器,其中包含<action android:name="android.intent.action.DATA_SMS_RECEIVED" />。当我调用sendDataMessage()方法时,我期望接收器的onReceive()方法被调用。但是onReceive()方法从未被调用。我正在Nexus 4上进行测试,而不是在模拟器上。你是否在设备上做了一些不同的事情来使其正常工作? - Etienne Lawlor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接