android的sendDataMessage()工作示例

时间:2012-01-23 14:08:29

标签: android sms

我已经尝试使用 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

2 个答案:

答案 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模拟器可能存在错误的详细信息。