我正在尝试通过我的应用程序(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个小时尝试每一个可能的接收器、数据标签和端口号组合,但是没有任何数据短信被成功接收。
我真的没什么主意了。