我已经尝试使用 android.telephony.SmsManager 的 sendDataMessage(),几乎每一个我可能会遇到的样本的帮助。但是没有成功。
[如果您想查看代码然后只需检查mobiForge上的“发送Sms android”链接,我猜它是最受欢迎的(和我使用的那个)。]
This是参考此问题的示例之一。
当我使用如下示例中所示的标准接收器时,我的广播接收器确实被激活,我能够看到包含我的消息的Toast,从而证明我的接收器已成功运行。 [顺便说一下,我正在调用 SmsManager.sendTextMessage(),它正在成功运行,因此没有问题。
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
然而,当我使用以下接收器时,我无法获得Toast,这意味着我的接收器显然不被激活,因此没有Toast。
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<data android:port="8901"/>
<data android:scheme="sms"/>
</intent-filter>
</receiver>
我的问题是为什么? 如果你们中的一些人认为我的sendDataMessage()中的端口号不正确,那么我向你保证它的8901是短值。
因此,我想请求任何有解决方案的人解释解决方案或提供一个有效的例子。
感谢任何可以提前帮助的人!
最诚挚的问候, Siddhant
答案 0 :(得分:2)
好吧,我似乎在我的代码中发现了问题。
修复方法是将上面显示的接收器中的 android:name 值从 android.provider.Telephony.SMS_RECEIVED 更改为 android.intent.action。 DATA_SMS_RECEIVED 强>
所以新的接收器看起来像:
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:port="8901"/>
<data android:scheme="sms"/>
</intent-filter>
</receiver>
感谢KRVarma SMSDemo在理解代码后提供了一些非常有用的见解。
答案 1 :(得分:0)
Here是有关此功能的Android模拟器可能存在错误的详细信息。